| $ git diff libsemanage/src/genhomedircon.c
|
| diff --git a/libsemanage/src/genhomedircon.c b/libsemanage/src/genhomedircon.c
|
| index 8782e2cb..d7b79c4c 100644
|
| --- a/libsemanage/src/genhomedircon.c
|
| +++ b/libsemanage/src/genhomedircon.c
|
| @@ -354,24 +354,44 @@ static semanage_list_t *get_home_dirs(genhomedircon_settings_t * s)
|
|
|
| path = semanage_findval(PATH_ETC_LOGIN_DEFS, "UID_MIN", NULL);
|
| if (path && *path) {
|
| - temp = atoi(path);
|
| - minuid = temp;
|
| - minuid_set = 1;
|
| + char *endptr;
|
| + const unsigned long val = strtoul(path, &endptr, 0);
|
| + if (endptr != path && *endptr == '\0') {
|
| + minuid = (uid_t)val;
|
| + minuid_set = 1;
|
| + } else {
|
| + /* we were provided an invalid value, use defaults. */
|
| + minuid = 1000;
|
| + minuid_set = 1;
|
| + }
|
| }
|
| free(path);
|
| path = NULL;
|
|
|
| path = semanage_findval(PATH_ETC_LOGIN_DEFS, "UID_MAX", NULL);
|
| if (path && *path) {
|
| - temp = atoi(path);
|
| - maxuid = temp;
|
| + char *endptr;
|
| + const unsigned long val = strtoul(path, &endptr, 0);
|
| + if (endptr != path && *endptr == '\0') {
|
| + maxuid = (uid_t)val;
|
| + } else {
|
| + /* we were provided an invalid value, use defaults. */
|
| + maxuid = 60000;
|
| + }
|
| }
|
| free(path);
|
| path = NULL;
|
|
|
| path = semanage_findval(PATH_ETC_LIBUSER, "LU_UIDNUMBER", "=");
|
| if (path && *path) {
|
| - temp = atoi(path);
|
| + char *endptr;
|
| + const unsigned long val = strtoul(path, &endptr, 0);
|
| + if (endptr != path && *endptr == '\0') {
|
| + temp = (uid_t)val;
|
| + } else {
|
| + /* we were provided an invalid value, use defaults. */
|
| + temp = 500;
|
| + }
|
| if (!minuid_set || temp < minuid) {
|
| minuid = temp;
|
| minuid_set = 1;
|