aboutsummaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorSunil Nimmagadda <sunil@sunilnimmagadda.com>2013-10-25 10:27:53 +0530
committerSunil Nimmagadda <sunil@sunilnimmagadda.com>2013-10-25 10:27:53 +0530
commit9140258223150a922baa07c589ed5924a99131cc (patch)
treecdb0c0dae27f4fee6601c2b414d502667d2edc2d /contrib
parentImplement simple encrypt utility. (diff)
downloadOpenSMTPD-9140258223150a922baa07c589ed5924a99131cc.tar.xz
OpenSMTPD-9140258223150a922baa07c589ed5924a99131cc.zip
Use chacha_random instead of libc's random.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/libexec/encrypt/Makefile.am13
-rw-r--r--contrib/libexec/encrypt/encrypt.c5
2 files changed, 15 insertions, 3 deletions
diff --git a/contrib/libexec/encrypt/Makefile.am b/contrib/libexec/encrypt/Makefile.am
index 7d7062f4..e331fd53 100644
--- a/contrib/libexec/encrypt/Makefile.am
+++ b/contrib/libexec/encrypt/Makefile.am
@@ -2,6 +2,17 @@ pkglibexec_PROGRAMS = encrypt
encrypt_SOURCES = encrypt.c
-CFLAGS += -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED
+INCLUDES = -I$(top_srcdir)/openbsd-compat
+
+LIBCOMPAT = $(top_builddir)/openbsd-compat/libopenbsd-compat.a
+
+LDADD = $(LIBCOMPAT)
+
+# need to define _GNU_SOURCE to get:
+# EAI_NODATA defined
+# {v,}asprintf
+# setres{g,u}id
+CFLAGS += -D_GNU_SOURCE -D_XOPEN_SOURCE
+
uninstall-hook:
rmdir $(DESTDIR)$(pkglibexecdir) 2> /dev/null || /bin/true
diff --git a/contrib/libexec/encrypt/encrypt.c b/contrib/libexec/encrypt/encrypt.c
index 743b4474..74da6fde 100644
--- a/contrib/libexec/encrypt/encrypt.c
+++ b/contrib/libexec/encrypt/encrypt.c
@@ -16,9 +16,10 @@
*/
#include <stdio.h>
-#include <stdlib.h>
#include <unistd.h>
+#include "openbsd-compat.h"
+
#define PASSWORD_LEN 128
static unsigned char itoa64[] = /* 0 ... 63 => ascii - 64 */
@@ -36,7 +37,7 @@ main(int argc, char *argv[])
return (1);
}
- to64(&salt[0], random(), 2);
+ to64(&salt[0], chacha_random(), 2);
salt[2] = '\0';
if ((c = crypt(argv[1], salt)) == NULL) {
fprintf(stderr, "crypt failed");