Thanks, in this case we should then compare st.st_size != 2 * MD5_DIGEST_LENGTH
It would be good to also put the 2 * MD5_DIGEST_LENGTH to some header as MD5_DIGEST_LENGTH_ASCII. Then it could be simply: st.st_size != MD5_DIGEST_LENGTH_ASCII I have not tried yet but I could send patch for this. Joonas Denis 'GNUtoo' Carikli: > On Sun, 29 Nov 2020 15:00:38 +0200 > Joonas Kylmälä <joonas.kylm...@iki.fi> wrote: > >> Any idea why are we not just checking st.st_size == MD5_DIGEST_LENGTH >> ? If we don't check that the data that exists on the file is not the >> same length then we end up just comparing the first MD5_DIGEST_LENGTH >> / 16 bytes. > Good question: I didn't look at that when working on that patch. > > It's because the md5 is stored as text inside the nv_data.bin.md5 >> $ cat nv_data.bin.md5 ; echo >> 90e82ca32a48369b33f6f64955443fa9 >> $ file nv_data.bin.md5 >> nv_data.bin.md5: ASCII text, with no line terminators > So each characters takes 8 bit (ASCII). > > So with that nv_data.bin.md5 takes 32 bytes: >> $ ls -l nv_data.bin.md5 >> -rw-r--r-- 1 gnutoo gnutoo 32 11 sept. 04:01 nv_data.bin.md5 > > If you were to encode that directly in binary, each "character" would > take only 4 bits: >> $ hexdump -C nv_data.bin.md5.bin >> 00000000 90 e8 2c a3 2a 48 36 9b 33 f6 f6 49 55 44 3f a9 >> |..,.*H6.3..IUD?.| >> 00000010 > > $ ls -l nv_data.bin.md5.bin > -rw-r--r-- 1 gnutoo gnutoo 16 1 déc. 12:30 nv_data.bin.md5.bin > > Denis. > _______________________________________________ Replicant mailing list Replicant@osuosl.org https://lists.osuosl.org/mailman/listinfo/replicant