The _SC_LOGIN_NAME_MAX value includes space for the NUL byte. The length
of name must smaller than this value to be valid.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
* User names length are limited by the kernel
*/
maxlen = sysconf(_SC_LOGIN_NAME_MAX);
- if (strlen(name) > maxlen)
+ if (strlen(name) >= maxlen)
return false;
return is_valid_name (name);
char *name;
max = sysconf(_SC_LOGIN_NAME_MAX);
- name = MALLOC(max + 2, char);
+ name = MALLOC(max + 1, char);
assert_true(name != NULL);
- memset(name, '_', max + 1);
+ memset(name, '_', max);
- name[max + 1] = '\0';
+ name[max] = '\0';
assert_true(false == is_valid_user_name(name));
- name[max] = '\0';
+ name[max - 1] = '\0';
assert_true(is_valid_user_name(name));
free(name);