summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Angelacos <nangel@alpinelinux.org>2008-03-13 12:28:06 +0000
committerNathan Angelacos <nangel@alpinelinux.org>2008-03-13 12:28:06 +0000
commit30723d26491b5bff3b19171e9d53342d830d86b8 (patch)
treebf91a40b2387f24dbd55e70abd5e783d80e4c8f1
parent161b48b1117e1520d841862b9c7ab8927c1af57e (diff)
downloadhaserl-30723d26491b5bff3b19171e9d53342d830d86b8.tar.bz2
haserl-30723d26491b5bff3b19171e9d53342d830d86b8.tar.xz
fix the array parsing in myputenv (again)
-rw-r--r--src/haserl.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/haserl.c b/src/haserl.c
index 641e820..fbfca7e 100644
--- a/src/haserl.c
+++ b/src/haserl.c
@@ -204,6 +204,7 @@ myputenv (list_t * cur, char *str, char *prefix)
char *entry = NULL;
char *temp = NULL;
int array = 0;
+ int len;
keylen = (size_t) ((char *) memchr (str, '=', strlen (str)) - (char *) str);
if (keylen <= 0)
@@ -223,7 +224,6 @@ myputenv (list_t * cur, char *str, char *prefix)
if (strlen (prefix))
{
strncat (entry, prefix, strlen (prefix));
- keylen+= strlen(prefix);
}
if (array == 1)
@@ -237,14 +237,15 @@ myputenv (list_t * cur, char *str, char *prefix)
}
/* does the value already exist? */
+ len = keylen + strlen(prefix) + 1;
while (cur != NULL)
{
- if (memcmp (cur->buf, entry, keylen + 1) == 0)
+ if (memcmp (cur->buf, entry, len) == 0)
{
if (array == 1)
{
/* if an array, add this value to the old array */
- temp = xmalloc (strlen (cur->buf) + strlen (entry + keylen));
+ temp = xmalloc (strlen (cur->buf) + len );
memmove (temp, cur->buf, strlen (cur->buf));
strcat (temp, "\n");
strcat (temp, str + keylen + 3);