Limit password length to 64 characters
#include "util.h"
#define TOKEN_SIZE 16
+#define MAX_PASSWORD_LENGTH 64
int auth_set_password(const char *username, const char *password) {
char filename[512];
- int fd;
+ int fd, n;
if (!valid_name(username) || !blerg_exists(username))
return 0;
+ n = strlen(password);
+ if (n > MAX_PASSWORD_LENGTH)
+ return 0;
+
snprintf(filename, 512, "%s/%s/password", DATA_PATH, username);
fd = open(filename, O_WRONLY | O_CREAT, 0600);
- write(fd, password, strlen(password));
+ write(fd, password, n);
close(fd);
return 1;
fd = open(filename, O_RDONLY);
if (fd == -1)
return 0;
- len = read(fd, password, 32);
+ len = read(fd, password, MAX_PASSWORD_LENGTH);
close(fd);
password[len] = 0;
if (auth_get_password(username, epw) == 0)
return 0;
- if (strncmp(password, epw, 32) == 0)
+ if (strncmp(password, epw, MAX_PASSWORD_LENGTH) == 0)
return 1;
else
return 0;