From ebac2da962bfaae01388195a36954718b3b5b146 Mon Sep 17 00:00:00 2001 From: "theanomaly.is@gmail.com" Date: Sun, 8 Apr 2012 07:34:26 -0400 Subject: [PATCH] fix for bug 61660 (hex2bin will now always return an even length string 0 padded) --- ext/standard/string.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ext/standard/string.c b/ext/standard/string.c index 0aade780856b9..174f587e3d18a 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -151,10 +151,20 @@ static char *php_bin2hex(const unsigned char *old, const size_t oldlen, size_t * static char *php_hex2bin(const unsigned char *old, const size_t oldlen, size_t *newlen) { size_t target_length = oldlen >> 1; + int e; + e = oldlen & 1; + if (e) { + target_length++; + } register unsigned char *str = (unsigned char *)safe_emalloc(target_length, sizeof(char), 1); size_t i, j; for (i = j = 0; i < target_length; i++) { - char c = old[j++]; + char c = '0'; + if (j == 0 && e) { + c = '0'; + } else { + c = old[j++]; + } if (c >= '0' && c <= '9') { str[i] = (c - '0') << 4; } else if (c >= 'a' && c <= 'f') {