src/server/plugins/postgresql/webdav.c

branch
webdav
changeset 356
eebc3d32c7c1
parent 348
bdd31584141f
child 366
47bc686fafe4
equal deleted inserted replaced
355:4a7dd7ff92c9 356:eebc3d32c7c1
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;

mercurial