*** uri.c 2008-04-24 08:33:58.099843208 -0700 --- urifix.c 2008-04-24 08:33:59.546623264 -0700 *************** xmlCreateURI(void) { *** 225,230 **** --- 225,231 ---- xmlChar * xmlSaveUri(xmlURIPtr uri) { xmlChar *ret = NULL; + xmlChar *temp; const char *p; int len; int max; *************** xmlSaveUri(xmlURIPtr uri) { *** 246,268 **** while (*p != 0) { if (len >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } ret[len++] = *p++; } if (len >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } ret[len++] = ':'; } --- 247,273 ---- while (*p != 0) { if (len >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } ret[len++] = *p++; } if (len >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } ret[len++] = ':'; } *************** xmlSaveUri(xmlURIPtr uri) { *** 271,282 **** while (*p != 0) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } if (IS_RESERVED(*(p)) || IS_UNRESERVED(*(p))) ret[len++] = *p++; --- 276,289 ---- while (*p != 0) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } if (IS_RESERVED(*(p)) || IS_UNRESERVED(*(p))) ret[len++] = *p++; *************** xmlSaveUri(xmlURIPtr uri) { *** 292,303 **** if (uri->server != NULL) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } ret[len++] = '/'; ret[len++] = '/'; --- 299,312 ---- if (uri->server != NULL) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } ret[len++] = '/'; ret[len++] = '/'; *************** xmlSaveUri(xmlURIPtr uri) { *** 306,318 **** while (*p != 0) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } if ((IS_UNRESERVED(*(p))) || ((*(p) == ';')) || ((*(p) == ':')) || --- 315,329 ---- while (*p != 0) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } if ((IS_UNRESERVED(*(p))) || ((*(p) == ';')) || ((*(p) == ':')) || *************** xmlSaveUri(xmlURIPtr uri) { *** 330,342 **** } if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } ret[len++] = '@'; } --- 341,355 ---- } if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } ret[len++] = '@'; } *************** xmlSaveUri(xmlURIPtr uri) { *** 344,382 **** while (*p != 0) { if (len >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } ret[len++] = *p++; } if (uri->port > 0) { if (len + 10 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } len += snprintf((char *) &ret[len], max - len, ":%d", uri->port); } } else if (uri->authority != NULL) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! return(NULL); ! } } ret[len++] = '/'; ret[len++] = '/'; --- 357,401 ---- while (*p != 0) { if (len >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } ret[len++] = *p++; } if (uri->port > 0) { if (len + 10 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } len += snprintf((char *) &ret[len], max - len, ":%d", uri->port); } } else if (uri->authority != NULL) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! xmlFree(ret); ! return(NULL); ! } ! ret = temp; } ret[len++] = '/'; ret[len++] = '/'; *************** xmlSaveUri(xmlURIPtr uri) { *** 384,396 **** while (*p != 0) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } if ((IS_UNRESERVED(*(p))) || ((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) || --- 403,417 ---- while (*p != 0) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } if ((IS_UNRESERVED(*(p))) || ((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) || *************** xmlSaveUri(xmlURIPtr uri) { *** 408,420 **** } else if (uri->scheme != NULL) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! return(NULL); ! } } ret[len++] = '/'; ret[len++] = '/'; --- 429,443 ---- } else if (uri->scheme != NULL) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! xmlFree(ret); ! return(NULL); ! } ! ret = temp; } ret[len++] = '/'; ret[len++] = '/'; *************** xmlSaveUri(xmlURIPtr uri) { *** 448,460 **** while (*p != 0) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } if ((IS_UNRESERVED(*(p))) || ((*(p) == '/')) || ((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) || --- 471,485 ---- while (*p != 0) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } if ((IS_UNRESERVED(*(p))) || ((*(p) == '/')) || ((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) || *************** xmlSaveUri(xmlURIPtr uri) { *** 473,524 **** if (uri->query_raw != NULL) { if (len + 1 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! return(NULL); ! } } ret[len++] = '?'; p = uri->query_raw; while (*p != 0) { if (len + 1 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } ret[len++] = *p++; } } else if (uri->query != NULL) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! return(NULL); ! } } ret[len++] = '?'; p = uri->query; while (*p != 0) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); return(NULL); } } if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) ret[len++] = *p++; --- 498,557 ---- if (uri->query_raw != NULL) { if (len + 1 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! xmlFree(ret); ! return(NULL); ! } ! ret = temp; } ret[len++] = '?'; p = uri->query_raw; while (*p != 0) { if (len + 1 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } ret[len++] = *p++; } } else if (uri->query != NULL) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! xmlFree(ret); ! return(NULL); ! } ! ret = temp; } ret[len++] = '?'; p = uri->query; while (*p != 0) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlSaveUri: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) ret[len++] = *p++; *************** xmlSaveUri(xmlURIPtr uri) { *** 535,560 **** if (uri->fragment != NULL) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! return(NULL); ! } } ret[len++] = '#'; p = uri->fragment; while (*p != 0) { if (len + 3 >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! return(NULL); ! } } if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) ret[len++] = *p++; --- 568,597 ---- if (uri->fragment != NULL) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! xmlFree(ret); ! return(NULL); ! } ! ret = temp; } ret[len++] = '#'; p = uri->fragment; while (*p != 0) { if (len + 3 >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! xmlFree(ret); ! return(NULL); ! } ! ret = temp; } if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) ret[len++] = *p++; *************** xmlSaveUri(xmlURIPtr uri) { *** 569,580 **** } if (len >= max) { max *= 2; ! ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (ret == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! return(NULL); ! } } ret[len++] = 0; return(ret); --- 606,619 ---- } if (len >= max) { max *= 2; ! temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar)); ! if (temp == NULL) { ! xmlGenericError(xmlGenericErrorContext, ! "xmlSaveUri: out of memory\n"); ! xmlFree(ret); ! return(NULL); ! } ! ret = temp; } ret[len++] = 0; return(ret); *************** xmlURIUnescapeString(const char *str, in *** 928,933 **** --- 967,973 ---- xmlChar * xmlURIEscapeStr(const xmlChar *str, const xmlChar *list) { xmlChar *ret, ch; + xmlChar *temp; const xmlChar *in; unsigned int len, out; *************** xmlURIEscapeStr(const xmlChar *str, cons *** 951,962 **** while(*in != 0) { if (len - out <= 3) { len += 20; ! ret = (xmlChar *) xmlRealloc(ret, len); ! if (ret == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlURIEscapeStr: out of memory\n"); return(NULL); } } ch = *in; --- 991,1004 ---- while(*in != 0) { if (len - out <= 3) { len += 20; ! temp = (xmlChar *) xmlRealloc(ret, len); ! if (temp == NULL) { xmlGenericError(xmlGenericErrorContext, "xmlURIEscapeStr: out of memory\n"); + xmlFree(ret); return(NULL); } + ret = temp; } ch = *in; *************** xmlURIEscape(const xmlChar * str) *** 1009,1015 **** #define NULLCHK(p) if(!p) { \ xmlGenericError(xmlGenericErrorContext, \ "xmlURIEscape: out of memory\n"); \ ! return NULL; } if (str == NULL) return (NULL); --- 1051,1058 ---- #define NULLCHK(p) if(!p) { \ xmlGenericError(xmlGenericErrorContext, \ "xmlURIEscape: out of memory\n"); \ ! xmlFreeURI(uri); \ ! return NULL; } \ if (str == NULL) return (NULL);