fix(userspace/libc): handle NULL input in getenv function

Signed-off-by: EnderIce2 <enderice2@protonmail.com>
This commit is contained in:
EnderIce2 2025-02-22 02:52:11 +02:00
parent 74ff9579f3
commit c12ee67592
No known key found for this signature in database
GPG Key ID: 2EE20AF089811A5A

View File

@ -76,11 +76,16 @@ export char *gcvt(double, int, char *);
export char *getenv(const char *name) export char *getenv(const char *name)
{ {
if (name == NULL)
return NULL;
size_t len = strlen(name);
for (char **env = environ; *env != 0; ++env) for (char **env = environ; *env != 0; ++env)
{ {
char *thisEnv = *env; char *thisEnv = *env;
if (strncmp(thisEnv, name, strlen(name)) == 0 && thisEnv[strlen(name)] == '=') char cmp = strncmp(thisEnv, name, len) == 0;
return thisEnv + strlen(name) + 1; if (cmp && thisEnv[len] == '=')
return thisEnv + len + 1;
} }
return NULL; return NULL;
} }