On 9/7/09 6:44 AM, "Daniel J Walsh" <dwalsh@xxxxxxxxxx> wrote: > On 09/04/2009 09:56 AM, Joshua Brindle wrote: >> Daniel J Walsh wrote: >>> If you have a homedir that ends in '/', genhomedircon gets confused. >>> >>> # useradd -h /home2/dwalsh/ dwalsh >>> # genhomedircon >>> >>> Check out the labeling. genhomedircon thinks dwalsh is a toplevel >>> home root. >>> >>> We should just get rid of this command... :^) >>> >>> Patch removes all trailing '/' from homedir. >> >>> diff --exclude-from=exclude -N -u -r >>> nsalibsemanage/src/genhomedircon.c libsemanage-2.0.33/src/genhomedircon.c >>> --- nsalibsemanage/src/genhomedircon.c 2008-08-28 >>> 09:34:24.000000000 -0400 >>> +++ libsemanage-2.0.33/src/genhomedircon.c 2009-07-15 >>> 10:32:20.000000000 -0400 >>> @@ -304,6 +304,10 @@ >>> continue; >>> if (!semanage_list_find(shells, pwbuf->pw_shell)) >>> continue; >>> + int len = strlen(pwbuf->pw_dir) -1; >>> + for(; len > 0 && pwbuf->pw_dir[len]=='/'; len--) { >>> + pwbuf->pw_dir[len]=0; >>> + } >>> if (strcmp(pwbuf->pw_dir, "/") == 0) >>> continue; >>> if (semanage_str_count(pwbuf->pw_dir, '/') <= 1) >> >> Why aren't you just doing: >> >> len = strlen(pwbuf->pwdir); >> if (pwbuf->pwdir[len] == '/') >> pwbuf->pwdir[len] = '\0'; >> >> ? >> > What about /home/dwalsh////// > Which I believe is legal >> Also, won't this fail if the homedir is set to '/' ? This check should >> probably go below the strcmp(pwbuf->pw_dir, "/") that is currently below >> it. > Yes good point. > I thought it worked fine with '/'. Since the loop condition is len > 0 (where len is the index of the last character, not the length of the string, which is a bit confusing and should probably be changed), it would never reset the first character. And don't you want this before the strcmp(pwbuf->pw_dir, "/") in case the path is ///// (which would of course be silly, but I believe is legal anyway)? Chad -- This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with the words "unsubscribe selinux" without quotes as the message.