logo

skeud

Simple and portable utilities to deal with user accounts (su, login)git clone https://anongit.hacktivis.me/git/skeud.git/
commit: 19e6ea25352f3905b3b737f333a01b9742495639
parent 57329cb47d3306caa2d8888356d8fbfa97fc86df
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Fri, 23 May 2025 20:11:41 +0200

Use `const char *` when possible

Diffstat:

Mcommon.c4++--
Mcommon.h4++--
Mcommon_test.c5+++--
Mlogin.c2+-
Msu.c10+++++-----
5 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/common.c b/common.c @@ -21,7 +21,7 @@ smin(size_t a, size_t b) // Needs to be constant-time so the hash can't be guessed via using a rainbow-table bool -hash_match(char *a, char *b) +hash_match(const char *a, const char *b) { /* flawfinder: ignore CWE-126 */ size_t len_a = strlen(a); @@ -40,7 +40,7 @@ hash_match(char *a, char *b) } bool -skeud_crypt_check(char *hash, char *password) +skeud_crypt_check(const char *hash, const char *password) { if(!hash) return false; if(strcmp(hash, "") == 0) return false; diff --git a/common.h b/common.h @@ -5,6 +5,6 @@ #include <sys/types.h> // ssize_t size_t smin(size_t a, size_t b); -bool hash_match(char *a, char *b); -bool skeud_crypt_check(char *hash, char *password); +bool hash_match(const char *a, const char *b); +bool skeud_crypt_check(const char *hash, const char *password); ssize_t skeud_getpass(char **password); diff --git a/common_test.c b/common_test.c @@ -50,8 +50,9 @@ ATF_TC_BODY(skeud_crypt_check_tc, tc) ATF_CHECK(skeud_crypt_check("$5$8VryLuwDTzZ8MSZX$2UIaWB5LcMlhXv7UQIBcFeq8/Dr6PswXZP/SJ09L01B", "foobar")); // SHA512: openssl passwd -6 -noverify - char *hash = "$6$QUEEGuX9dkGlNkTP$IJwcvb6tpm63hoOfm9QJjEgjte/OpcQS3S43zDN95G3diJ5Xc/OlhhbCkUyV/" - "A0ARhgQj2D/4m/DWhwvvs3A91"; + const char *hash = + "$6$QUEEGuX9dkGlNkTP$IJwcvb6tpm63hoOfm9QJjEgjte/OpcQS3S43zDN95G3diJ5Xc/OlhhbCkUyV/" + "A0ARhgQj2D/4m/DWhwvvs3A91"; ATF_CHECK(skeud_crypt_check(hash, "foobar")); } diff --git a/login.c b/login.c @@ -37,7 +37,7 @@ main(int argc, char *argv[]) int c = EOF; char *username = NULL; struct passwd *pwent = NULL; - char *shell = "/bin/sh"; + const char *shell = "/bin/sh"; if(getuid() != 0) { diff --git a/su.c b/su.c @@ -31,7 +31,7 @@ main(int argc, char *argv[]) bool opt_l = false; bool opt_p = false; int c = EOF; - char *username = "root"; + const char *username = "root"; struct passwd *pwent = NULL; char *shell = NULL; char *opt_cmd = NULL; @@ -208,7 +208,7 @@ main(int argc, char *argv[]) perror("su: setuid"); } - char *home = pwent->pw_dir ? pwent->pw_dir : "/"; + const char *home = pwent->pw_dir ? pwent->pw_dir : "/"; setenv("HOME", home, 1); if(opt_l) { @@ -223,8 +223,8 @@ main(int argc, char *argv[]) setenv("SHELL", shell, 1); setenv("IFS", " \t\n", 1); - int cmd_argc = 1; - char *cmd_argv[2 + 1 + 2] = {shell, NULL}; + int cmd_argc = 1; + const char *cmd_argv[2 + 1 + 2] = {shell, NULL}; if(opt_l) { @@ -242,7 +242,7 @@ main(int argc, char *argv[]) errno = 0; /* flawfinder: ignore CWE-78 */ - int ret = execvp(shell, cmd_argv); + int ret = execvp(shell, (char **)cmd_argv); if(ret < 0) { if(errno == ENOENT)