summaryrefslogtreecommitdiffstats
path: root/libutil/login_crypt.c
diff options
context:
space:
mode:
authorBrian Feldman <green@FreeBSD.org>2000-10-27 01:19:02 +0000
committerBrian Feldman <green@FreeBSD.org>2000-10-27 01:19:02 +0000
commitdcbc2eec155f1abda6e3f21555f114996b0079d4 (patch)
treea174e2f9bd4903891010f73cab6219bc69eed006 /libutil/login_crypt.c
parent64f057143b18b4110b24c745b8aefcc8da518d76 (diff)
downloadpw-darwin-dcbc2eec155f1abda6e3f21555f114996b0079d4.tar.gz
pw-darwin-dcbc2eec155f1abda6e3f21555f114996b0079d4.tar.zst
pw-darwin-dcbc2eec155f1abda6e3f21555f114996b0079d4.zip
Fix problems people were having with large -O levels with GCC and
getting libutil/libcrypt to work properly. I've determined that GCC thinks it can inline all functions, including weak-symboled ones, if it feels like it. Create a new stub.c and move any stubs there to prevent inlining. Thanks to jdp and William S. Duncanson for helping me finally find the problem.
Diffstat (limited to 'libutil/login_crypt.c')
-rw-r--r--libutil/login_crypt.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/libutil/login_crypt.c b/libutil/login_crypt.c
index b291100..e080ba9 100644
--- a/libutil/login_crypt.c
+++ b/libutil/login_crypt.c
@@ -29,19 +29,18 @@
#include <sys/types.h>
#include <login_cap.h>
+#include <stdio.h>
+#include <stdlib.h>
#include <unistd.h>
-#pragma weak crypt_set_format
-int
-crypt_set_format(const char *f) {
- return (0);
-}
-
const char *
login_setcryptfmt(login_cap_t *lc, const char *def, const char *error) {
const char *cipher;
- cipher = login_getcapstr(lc, "passwd_format", def, NULL);
+ cipher = login_getcapstr(lc, "passwd_format", (char *)def, NULL);
+ if (getenv("CRYPT_DEBUG") != NULL)
+ fprintf(stderr, "login_setcryptfmt: "
+ "passwd_format = %s\n", cipher);
if (cipher == NULL)
return (error);
if (!crypt_set_format(cipher))