kdrive: check for null memory, fix OOB

If key/value allocation failed, don't bother adding another InputOption. And
make sure the memory allocated is large enough for the trailing \0

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
Peter Hutterer 2011-10-25 12:57:07 +10:00
parent ffe20acedb
commit a41214bc9a

View File

@ -1049,10 +1049,15 @@ KdGetOptions (InputOption **options, char *string)
if (strchr(string, '='))
{
tam_key = (strchr(string, '=') - string);
key = malloc(tam_key);
key = malloc(tam_key + 1);
if (!key)
goto out;
strncpy(key, string, tam_key);
key[tam_key] = '\0';
value = strdup(strchr(string, '=') + 1);
if (!value)
goto out;
}
else
{
@ -1064,6 +1069,7 @@ KdGetOptions (InputOption **options, char *string)
if (newopt)
*options = newopt;
out:
free(key);
free(value);