src/server/daemon/acl.c

branch
webdav
changeset 241
4adad7faf452
parent 211
2160585200ac
child 260
4779a6fb4fbe
equal deleted inserted replaced
240:cd74667f6c85 241:4adad7faf452
315 uid_t uid, 315 uid_t uid,
316 gid_t gid, 316 gid_t gid,
317 uid_t owner, 317 uid_t owner,
318 gid_t owninggroup); 318 gid_t owninggroup);
319 319
320 int fs_acl_check(SysACL *acl, User *user, char *path, uint32_t access_mask) { 320 int fs_acl_check(SysACL *acl, User *user, const char *path, uint32_t access_mask) {
321 sstr_t p; 321 sstr_t p;
322 if(path[0] != '/') { 322 if(path[0] != '/') {
323 size_t n = 128; 323 size_t n = 128;
324 char *cwd = malloc(n); 324 char *cwd = malloc(n);
325 while(!getcwd(cwd, n)) { 325 while(!getcwd(cwd, n)) {
330 free(cwd); 330 free(cwd);
331 return 0; 331 return 0;
332 } 332 }
333 } 333 }
334 sstr_t wd = sstr(cwd); 334 sstr_t wd = sstr(cwd);
335 sstr_t pp = sstr(path); 335 sstr_t pp = sstr((char*)path);
336 336
337 p = sstrcat(3, wd, sstrn("/", 1), pp); 337 p = sstrcat(3, wd, sstrn("/", 1), pp);
338 } else { 338 } else {
339 p = sstrdup(sstr(path)); 339 p = sstrdup(sstr((char*)path));
340 } 340 }
341 if(p.ptr[p.length-1] == '/') { 341 if(p.ptr[p.length-1] == '/') {
342 p.ptr[p.length-1] = 0; 342 p.ptr[p.length-1] = 0;
343 p.length--; 343 p.length--;
344 } 344 }

mercurial