forked from lda/telodendria
Complete parameter parsing
This commit is contained in:
parent
52abd18324
commit
5ca5ec7dd4
2 changed files with 119 additions and 129 deletions
22
src/Http.c
22
src/Http.c
|
@ -383,9 +383,6 @@ HttpParamDecode(char * in)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
printf("HttpParamDecode(%s)\n", in);
|
||||
fflush(stdout);
|
||||
|
||||
params = HashMapCreate();
|
||||
if (!params)
|
||||
{
|
||||
|
@ -409,7 +406,7 @@ HttpParamDecode(char * in)
|
|||
|
||||
while (*in && *in != '=')
|
||||
{
|
||||
if (len >= allocated)
|
||||
if (len >= allocated - 1)
|
||||
{
|
||||
allocated += TELODENDRIA_STRING_CHUNK;
|
||||
buf = Realloc(buf, allocated);
|
||||
|
@ -420,6 +417,8 @@ HttpParamDecode(char * in)
|
|||
in++;
|
||||
}
|
||||
|
||||
buf[len] = '\0';
|
||||
|
||||
/* Sanity check */
|
||||
if (*in != '=')
|
||||
{
|
||||
|
@ -449,7 +448,7 @@ HttpParamDecode(char * in)
|
|||
|
||||
while (*in && *in != '&')
|
||||
{
|
||||
if (len >= allocated)
|
||||
if (len >= allocated - 1)
|
||||
{
|
||||
allocated += TELODENDRIA_STRING_CHUNK;
|
||||
buf = Realloc(buf, allocated);
|
||||
|
@ -460,6 +459,8 @@ HttpParamDecode(char * in)
|
|||
in++;
|
||||
}
|
||||
|
||||
buf[len] = '\0';
|
||||
|
||||
/* Decode value */
|
||||
decVal = HttpUrlDecode(buf);
|
||||
Free(buf);
|
||||
|
@ -484,17 +485,6 @@ HttpParamDecode(char * in)
|
|||
}
|
||||
}
|
||||
|
||||
printf("Done with decoding, here's what we got:\n");
|
||||
{
|
||||
char *key;
|
||||
char *val;
|
||||
|
||||
while (HashMapIterate(params, &key, (void **) &val))
|
||||
{
|
||||
printf(" [%s]: [%s]\n", key, val);
|
||||
}
|
||||
}
|
||||
|
||||
return params;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue