diff options
| author | Christian Grothoff <christian@grothoff.org> | 2019-11-09 21:36:19 +0100 | 
|---|---|---|
| committer | Christian Grothoff <christian@grothoff.org> | 2019-11-09 21:36:19 +0100 | 
| commit | 77b0e836d1ca5b1aec45ba6c4c901153a22ab196 (patch) | |
| tree | bfeabf4306d0d23d9e571c75b7681bf0c6b99a74 /src/util | |
| parent | c0a87f108718a891585b8da35005646ff0b4db34 (diff) | |
fix off by one: reserve space for 0-termination
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/util.c | 13 | 
1 files changed, 5 insertions, 8 deletions
| diff --git a/src/util/util.c b/src/util/util.c index 10d5d53f..fa65fc23 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -265,25 +265,22 @@ TALER_url_join (const char *base_url,    unsigned int iparam = 0;    va_list args;    struct TALER_Buffer buf = { 0 }; -  size_t len = 0; +  size_t len;    GNUNET_assert (NULL != base_url);    GNUNET_assert (NULL != path); - -  if (strlen (base_url) == 0) +  if (0 == strlen (base_url))    {      /* base URL can't be empty */      GNUNET_break (0);      return NULL;    } -    if ('/' != base_url[strlen (base_url) - 1])    {      /* Must be an actual base URL! */      GNUNET_break (0);      return NULL;    } -    if ('/' == path[0])    {      /* The path must be relative. */ @@ -291,14 +288,14 @@ TALER_url_join (const char *base_url,      return NULL;    } -  // Path should be relative to existing path of base URL +  /* Path should be relative to existing path of base URL */    GNUNET_break ('/' != path[0]);    if ('/' == path[0])      GNUNET_break (0);    /* 1st pass: compute length */ -  len += strlen (base_url) + strlen (path); +  len = strlen (base_url) + strlen (path) + 1;    va_start (args, path);    while (1) @@ -316,7 +313,6 @@ TALER_url_join (const char *base_url,    va_end (args);    TALER_buffer_prealloc (&buf, len); -    TALER_buffer_write_str (&buf, base_url);    TALER_buffer_write_str (&buf, path); @@ -325,6 +321,7 @@ TALER_url_join (const char *base_url,    {      char *key;      char *value; +      key = va_arg (args, char *);      if (NULL == key)        break; | 
