521 size_t pathlen = strlen(path); |
521 size_t pathlen = strlen(path); |
522 if(pathlen == 0) { |
522 if(pathlen == 0) { |
523 log_ereport(LOG_FAILURE, "pg_dav_propfind_do: query returned invalid path"); |
523 log_ereport(LOG_FAILURE, "pg_dav_propfind_do: query returned invalid path"); |
524 return 1; |
524 return 1; |
525 } |
525 } |
526 char *newres_href = pool_malloc(pool, pathlen+2); |
526 if(pathlen > PG_MAX_PATH_LEN) { |
527 memcpy(newres_href, path, pathlen); |
527 log_ereport(LOG_FAILURE, "pg_dav_propfind_do: path too long: resource_id: %s", res_id); |
|
528 return 1; |
|
529 } |
|
530 char *newres_href = pool_malloc(pool, (pathlen*3)+2); |
|
531 util_uri_escape(newres_href, path); |
528 if(iscollection && path[pathlen-1] != '/') { |
532 if(iscollection && path[pathlen-1] != '/') { |
529 newres_href[pathlen++] = '/'; |
533 size_t newres_href_len = strlen(newres_href); |
530 } |
534 newres_href[newres_href_len] = '/'; |
531 newres_href[pathlen] = '\0'; |
535 newres_href[newres_href_len+1] = '\0'; |
|
536 } |
532 |
537 |
533 // new resource |
538 // new resource |
534 resource = response->addresource(response, newres_href); |
539 resource = response->addresource(response, newres_href); |
535 vfsprops_set = FALSE; |
540 vfsprops_set = FALSE; |
536 current_resource_id = resource_id; |
541 current_resource_id = resource_id; |