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:
parent
ffe20acedb
commit
a41214bc9a
|
@ -1049,10 +1049,15 @@ KdGetOptions (InputOption **options, char *string)
|
||||||
if (strchr(string, '='))
|
if (strchr(string, '='))
|
||||||
{
|
{
|
||||||
tam_key = (strchr(string, '=') - string);
|
tam_key = (strchr(string, '=') - string);
|
||||||
key = malloc(tam_key);
|
key = malloc(tam_key + 1);
|
||||||
|
if (!key)
|
||||||
|
goto out;
|
||||||
|
|
||||||
strncpy(key, string, tam_key);
|
strncpy(key, string, tam_key);
|
||||||
key[tam_key] = '\0';
|
key[tam_key] = '\0';
|
||||||
value = strdup(strchr(string, '=') + 1);
|
value = strdup(strchr(string, '=') + 1);
|
||||||
|
if (!value)
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1064,6 +1069,7 @@ KdGetOptions (InputOption **options, char *string)
|
||||||
if (newopt)
|
if (newopt)
|
||||||
*options = newopt;
|
*options = newopt;
|
||||||
|
|
||||||
|
out:
|
||||||
free(key);
|
free(key);
|
||||||
free(value);
|
free(value);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue