]> granicus.if.org Git - php/commitdiff
Fixed bug relating to un-initialized memory access
authorIlia Alshanetsky <iliaa@php.net>
Tue, 5 Jul 2011 20:10:45 +0000 (20:10 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 5 Jul 2011 20:10:45 +0000 (20:10 +0000)
ext/standard/crypt_sha256.c
ext/standard/crypt_sha512.c

index f9daed909a601c4cb8b4e01e61df6efab3cac14d..1dd69c2eb95fe2de634f93bdce04f7127c3e1af1 100644 (file)
@@ -395,9 +395,10 @@ char * php_sha256_crypt_r(const char *key, const char *salt, char *buffer, int b
        }
 
        if ((salt - (char *) 0) % __alignof__(uint32_t) != 0) {
-               char *tmp = (char *) alloca(salt_len + __alignof__(uint32_t));
+               char *tmp = (char *) alloca(salt_len + 1 + __alignof__(uint32_t));
                salt = copied_salt =
                memcpy(tmp + __alignof__(uint32_t) - (tmp - (char *) 0) % __alignof__ (uint32_t), salt, salt_len);
+               tmp[salt_len] = 0;
        }
 
        /* Prepare for the real work.  */
index f78ff03981dc2a8711d284b80d0d17c7c89fb0f0..c3e4debe63daca595f40de9d035e5d64ecf959dd 100644 (file)
@@ -430,8 +430,8 @@ php_sha512_crypt_r(const char *key, const char *salt, char *buffer, int buflen)
        }
 
        if ((salt - (char *) 0) % __alignof__ (uint64_t) != 0) {
-               char *tmp = (char *) alloca(salt_len + __alignof__(uint64_t));
-
+               char *tmp = (char *) alloca(salt_len + 1 + __alignof__(uint64_t));
+               tmp[salt_len] = 0;
                salt = copied_salt = memcpy(tmp + __alignof__(uint64_t) - (tmp - (char *) 0) % __alignof__(uint64_t), salt, salt_len);
        }