On 12/21/2011 10:54 PM, Dan McGee wrote: > On Wed, Dec 21, 2011 at 4:48 PM, Diogo Sousa <[email protected]> wrote: >> Created hex_representation() in lib/libalpm/util.c which is >> used in alpm_compute_md5sum() and alpm_compute_sha256sum(). >> >> Signed-off-by: Diogo Sousa <[email protected]> >> --- >> lib/libalpm/util.c | 56 >> ++++++++++++++++++++++++++-------------------------- >> 1 files changed, 28 insertions(+), 28 deletions(-) >> >> diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c >> index 4eeb0cd..2fe6087 100644 >> --- a/lib/libalpm/util.c >> +++ b/lib/libalpm/util.c >> @@ -917,7 +917,30 @@ static int sha2_file(const char *path, unsigned char >> output[32], int is224) >> } >> #endif >> >> -static const char *hex_digits = "0123456789abcdef"; >> +/** Create a string representing bytes in hexadecimal. >> + * >> + * @param bytes the bytes to represent in hexadecimal. >> + * @param size number of bytes to consider. >> + * @return a nul terminated string with the hexadecimal representation >> + * of bytes or NULL on error. This string must be freed. >> + */ >> +static char *hex_representation(unsigned char *bytes, size_t size) >> +{ >> + static const char *hex_digits = "0123456789abcdef"; > static not needed with const now that this is local to the function, > not a big deal though. > >> + char *str; >> + int i; >> + >> + MALLOC(str, 2*size+1, return NULL); > Man, this happens too much ,time to update HACKING. > Bad: > 2*size+1 > Good: > 2 * size + 1 > > We like spaces around here, so please use them in all places in this > patch you are using operators- this should have been clear from the > code you removed (e.g., "pos + 1"). >> + >> + for (i=0; i < size; i++) { >> + str[2*i] = hex_digits[bytes[i] >> 4]; >> + str[2*i+1] = hex_digits[bytes[i] & 0x0f]; >> + } >> + >> + str[2*size] = '\0'; >> + >> + return str; >> +} >> >> /** Get the md5 sum of file. >> * @param filename name of the file >> @@ -927,29 +950,17 @@ static const char *hex_digits = "0123456789abcdef"; >> char SYMEXPORT *alpm_compute_md5sum(const char *filename) >> { >> unsigned char output[16]; >> - char *md5sum; >> - int ret, i; >> + int ret; >> >> ASSERT(filename != NULL, return NULL); >> >> - MALLOC(md5sum, (size_t)33, return NULL); >> - /* defined above for OpenSSL, otherwise defined in md5.h */ >> ret = md5_file(filename, output); >> >> if(ret > 0) { >> - free(md5sum); >> return NULL; >> } >> >> - /* Convert the result to something readable */ >> - for(i = 0; i < 16; i++) { >> - int pos = i * 2; >> - /* high 4 bits are first digit, low 4 are second */ >> - md5sum[pos] = hex_digits[output[i] >> 4]; >> - md5sum[pos + 1] = hex_digits[output[i] & 0x0f]; >> - } >> - md5sum[32] = '\0'; >> - return md5sum; >> + return hex_representation(output,16); > Space after comma too... >> } >> >> /** Get the sha256 sum of file. >> @@ -960,29 +971,18 @@ char SYMEXPORT *alpm_compute_md5sum(const char >> *filename) >> char SYMEXPORT *alpm_compute_sha256sum(const char *filename) >> { >> unsigned char output[32]; >> - char *sha256sum; >> - int ret, i; >> + int ret; >> >> ASSERT(filename != NULL, return NULL); >> >> - MALLOC(sha256sum, (size_t)65, return NULL); >> /* defined above for OpenSSL, otherwise defined in sha2.h */ >> ret = sha2_file(filename, output, 0); >> >> if(ret > 0) { >> - free(sha256sum); >> return NULL; >> } >> >> - /* Convert the result to something readable */ >> - for(i = 0; i < 32; i++) { >> - int pos = i * 2; >> - /* high 4 bits are first digit, low 4 are second */ >> - sha256sum[pos] = hex_digits[output[i] >> 4]; >> - sha256sum[pos + 1] = hex_digits[output[i] & 0x0f]; >> - } >> - sha256sum[64] = '\0'; >> - return sha256sum; >> + return hex_representation(output,32); >> } >> >> /** Calculates a file's MD5 or SHA2 digest and compares it to an expected >> value. >> -- >> 1.7.8 >
Sorry, will submit in a few minutes. Thanks, Diogo Sousa
