diff --git a/build-update-package b/build-update-package index ce03ed61e23e25b3c292f5683f06b2d86e535f5e..31a317e13f2fe945c00946f5e100484f6f20544e 100755 --- a/build-update-package +++ b/build-update-package @@ -19,7 +19,19 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, # USA. +# This function checks one file integrity +check_file_integrity(){ + FILE="$*" + FILEREAL="$(echo ${FILE} | sed "s#^${MD5DIRESC}##g")" + + test -f "${AGENTPACKAGEDIR}/${FILEREAL}" || return 1 + (md5sum "${AGENTPACKAGEDIR}/${FILEREAL}" | cut -d' ' -f1 | \ + diff - "${FILE}" &> /dev/null) || return 1 +} + PREFIX="$(dirname $0)" +MD5DIR="${AGENTDIR}/${AGENTPACKAGEDIR}/.md5sum" +MD5DIRESC="$(echo ${MD5DIR} | sed "s/\./\\\./g")" # Get the configuration if ! source "${PREFIX}/buildpackage.conf" 2> /dev/null; then @@ -52,11 +64,27 @@ VERSION=$(cat ${VERSIONFILE}) # Set the output file name OUTPUT="${UPDATEDIR}/SEED2-update-${VERSION}.run" +# Change to agent directory +cd "${AGENTDIR}" + +# ----------------------------------------------------------------------------- +# Check all MD5 files +printf "Checking SEED2-run files integrity... " + +for FILE in $(find "${MD5DIR}" -type f); do + if ! check_file_integrity "${FILE}"; then + printf "ERROR: File(s) corrupted. Please, re-create integrity or %b" + "rebuild the agent files.\n" + exit 1 + fi +done + +printf "done.\n" + # ----------------------------------------------------------------------------- # Compress the agent files printf "Compressing SEED2-run files... " -cd "${AGENTDIR}" TARFILE=$(tempfile --prefix=SEED2-tar) if ! tar -czf "${TARFILE}" SEED2-run; then printf "ERROR: Failed to compress the agent files.\n"