X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=spx_afh.c;h=a95f234c5e318322a436ad07d74dd78acf169d05;hb=2da7e7a4d85dd0c9d2b846b15aa6da67b54bb627;hp=e693c4150e03b7dae9b991c343ec7abbfe980db0;hpb=69a7e7aa11d8bf9b05d6431c57276befbc9b35a3;p=paraslash.git diff --git a/spx_afh.c b/spx_afh.c index e693c415..a95f234c 100644 --- a/spx_afh.c +++ b/spx_afh.c @@ -57,31 +57,14 @@ struct private_spx_data { struct spx_header_info shi; }; - -static char *copy_comment(const char *src, int len) -{ - char *p = para_malloc(len + 1); - - if (len > 0) - memcpy(p, src, len); - p[len] = '\0'; - PARA_DEBUG_LOG("%s\n", p); - return p; -} - static bool copy_if_tag_type(const char *tag, int taglen, const char *type, char **p) { - int len = strlen(type); - - if (taglen <= len) - return false; - if (strncasecmp(tag, type, len)) - return false; - if (tag[len] != '=') + char *q = key_value_copy(tag, taglen, type); + if (!q) return false; free(*p); - *p = copy_comment(tag + len + 1, taglen - len - 1); + *p = q; return true; } @@ -100,7 +83,7 @@ static int spx_get_comments(unsigned char *comments, int length, c += 4; if (c + len > end) return -E_SPX_COMMENT; - tags->comment = copy_comment(c, len); + tags->comment = safe_strdup(c, len); c += len; if (c + 4 > end) @@ -129,7 +112,7 @@ static int spx_get_comments(unsigned char *comments, int length, continue; if (copy_if_tag_type(c, len, "comment", &tags->comment)) continue; - tag = copy_comment(c, len); + tag = safe_strdup(c, len); PARA_NOTICE_LOG("unrecognized comment: %s\n", tag); free(tag); }