diff --exclude-from=exclude -N -u -r nsalibsemanage/src/direct_api.c libsemanage-2.0.31/src/direct_api.c --- nsalibsemanage/src/direct_api.c 2009-01-13 08:45:35.000000000 -0500 +++ libsemanage-2.0.31/src/direct_api.c 2009-04-09 11:49:42.000000000 -0400 @@ -991,7 +991,7 @@ int retval = -1; char *data = NULL; - size_t data_len = 0; + ssize_t data_len = 0; int compressed = 0; int in_fd = -1; @@ -999,7 +999,7 @@ return -1; } - if ((data_len = map_file(in_fd, &data, &compressed)) == 0) { + if ((data_len = map_file(in_fd, &data, &compressed)) <= 0) { goto cleanup; } @@ -1117,7 +1117,7 @@ { int retval = -1; char *data = NULL; - size_t data_len = 0; + ssize_t data_len = 0; int compressed = 0; int in_fd = -1; @@ -1125,7 +1125,7 @@ return -1; } - if ((data_len = map_file(in_fd, &data, &compressed)) == 0) { + if ((data_len = map_file(in_fd, &data, &compressed)) <= 0) { goto cleanup; } @@ -1187,7 +1187,7 @@ { int retval = -1; char *data = NULL; - size_t data_len = 0; + ssize_t data_len = 0; int compressed = 0; int in_fd; @@ -1195,7 +1195,7 @@ return -1; } - if ((data_len = map_file(in_fd, &data, &compressed)) == 0) { + if ((data_len = map_file(in_fd, &data, &compressed)) <= 0) { goto cleanup; } diff --exclude-from=exclude -N -u -r nsalibsemanage/src/genhomedircon.c libsemanage-2.0.31/src/genhomedircon.c --- nsalibsemanage/src/genhomedircon.c 2008-08-28 09:34:24.000000000 -0400 +++ libsemanage-2.0.31/src/genhomedircon.c 2009-03-26 14:55:01.000000000 -0400 @@ -794,6 +794,12 @@ * /root */ continue; } + if (strcmp(pwent->pw_dir, "/root") == 0) { + /* don't relabel / genhomdircon checked to see if root + * was the user and if so, set his home directory to + * /root */ + continue; + } if (push_user_entry(&head, name, seuname, prefix, pwent->pw_dir) != STATUS_SUCCESS) { *errors = STATUS_ERR; diff --exclude-from=exclude -N -u -r nsalibsemanage/src/handle.c libsemanage-2.0.31/src/handle.c --- nsalibsemanage/src/handle.c 2008-11-14 17:10:15.000000000 -0500 +++ libsemanage-2.0.31/src/handle.c 2009-03-26 14:55:01.000000000 -0400 @@ -264,7 +264,7 @@ assert(sh != NULL && sh->funcs != NULL && sh->funcs->commit != NULL); if (!sh->is_in_transaction) { ERR(sh, - "Will not commit because caller does not have a tranaction lock yet."); + "Will not commit because caller does not have a transaction lock yet."); return -1; } retval = sh->funcs->commit(sh); diff --exclude-from=exclude -N -u -r nsalibsemanage/src/semanage.conf libsemanage-2.0.31/src/semanage.conf --- nsalibsemanage/src/semanage.conf 2008-08-28 09:34:24.000000000 -0400 +++ libsemanage-2.0.31/src/semanage.conf 2009-03-26 14:55:01.000000000 -0400 @@ -35,4 +35,4 @@ # given in . Change this setting if a different # version is necessary. #policy-version = 19 - +expand-check=0 diff --exclude-from=exclude -N -u -r nsalibsemanage/src/semanage_store.c libsemanage-2.0.31/src/semanage_store.c --- nsalibsemanage/src/semanage_store.c 2009-01-13 08:45:35.000000000 -0500 +++ libsemanage-2.0.31/src/semanage_store.c 2009-03-26 14:55:01.000000000 -0400 @@ -440,8 +440,6 @@ char tmp[PATH_MAX]; char buf[4192]; - if (link(src,dst) == 0) return 0; - n = snprintf(tmp, PATH_MAX, "%s.tmp", dst); if (n < 0 || n >= PATH_MAX) return -1; @@ -509,7 +507,8 @@ goto cleanup; } } else if (S_ISREG(sb.st_mode)) { - if (semanage_copy_file(path, path2, sb.st_mode) == -1) { + if ((link(path,path2) == -1) && + (semanage_copy_file(path, path2, sb.st_mode) == -1)) { goto cleanup; } }