diff --git a/fakeid.c b/fakeid.c index 0c6e0c4..43e8596 100644 --- a/fakeid.c +++ b/fakeid.c @@ -1,19 +1,30 @@ #define _GNU_SOURCE #include +#include #include #include #include #include #include +int strlcpy(char *restrict dest, const char *restrict src, size_t bufsize) { + size_t i; + for (i = 0; i < bufsize; ++i) { + dest[i] = src[i]; + if (src[i] == '\0') { + return 0; + } + } + return ERANGE; +} + char *getlogin(void) { return getenv("USER"); } int getlogin_r(char *buf, size_t bufsize) { - strncpy(buf, getlogin(), bufsize); - return 0; + return strlcpy(buf, getlogin(), bufsize); } struct passwd *getpwuid(uid_t uid) {