/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2011 Index Data
+ * Copyright (C) 1995-2013 Index Data
* See the file LICENSE for details.
*/
/**
for(i = 0; name[i]; i++)
sz += strlen(name[i]) + 3 + strlen(value[i]) * 3;
*path = (char *) odr_malloc(o, sz);
-
+
for(i = 0; name[i]; i++)
{
size_t ilen;
{
cp++;
no++;
+ while (*cp && *cp != '=' && *cp != '&')
+ {
+ /* check that x-form names looks sane */
+ if (*cp <= ' ' || *cp >= 127)
+ return 0;
+ cp++;
+ }
}
*name = (char **) odr_malloc(o, no * sizeof(char*));
*val = (char **) odr_malloc(o, no * sizeof(char*));
for (cp = path; *cp && *cp != '=' && *cp != '&'; cp++)
;
- (*name)[no] = (char *) odr_malloc(o, (cp-path)+1);
- memcpy((*name)[no], path, cp-path);
- (*name)[no][cp-path] = '\0';
-
+ (*name)[no] = odr_strdupn(o, path, cp - path);
path = cp;
if (*path == '=')
{
{
size_t i = 0;
char *ret;
-
+
path = p1 + 1;
p1 = strchr(path, '&');
if (!p1)