[1133] in Kerberos-V5-bugs
krb5b4pl3: Can't define srandom/random on systems that have both them and srand48/lrand48
daemon@ATHENA.MIT.EDU (Jonathan I. Kamens)
Mon Mar 13 18:06:33 1995
From: "Jonathan I. Kamens" <jik@cam.ov.com>
Date: Mon, 13 Mar 1995 18:09:34 -0500
To: krb5-bugs@MIT.EDU
appl/bsd/configure.in defines srandom and random to srand48 and
lrand48 on systems that have the latter. Some systems, most notably
Linux, have both srandom/random and srand48/lrand48, and their
prototypes in stdlib.h are different. On such systems, defining
srandom/random to srand48/lrand48 will cause compile-time errors
because of prototype conflicts.
I fixed this by definind RANDOM and SRANDOM instead of random and
srandom, and using those symbols in krlogin.c and krlogind.c.
Here's a patch:
--- configure.in 1995/03/13 22:59:40 1.1
+++ configure.in 1995/03/13 23:00:24
@@ -33,7 +33,7 @@
AC_FUNC_CHECK(setreuid,AC_DEFINE(HAVE_SETREUID))
AC_FUNC_CHECK(setresuid,AC_DEFINE(HAVE_SETRESUID))
dnl if srand48 is there, use it (krlogind needs it)
-AC_FUNC_CHECK(srand48,AC_DEFINE(srandom,srand48) AC_DEFINE(random,lrand48))
+AC_FUNC_CHECK(srand48,AC_DEFINE(SRANDOM,srand48) AC_DEFINE(RANDOM,lrand48))
AC_FUNC_CHECK(sigprocmask,
AC_COMPILE_CHECK([sigset_t],
[#include <signal.h>],
--- krlogin.c 1995/03/13 00:05:01 1.5
+++ krlogin.c 1995/03/13 23:02:59
@@ -138,7 +138,15 @@
#include <krb5/los-proto.h>
#include <com_err.h>
#include "defines.h"
-
+
+#ifndef RANDOM
+#define RANDOM() random()
+#endif
+
+#ifndef SRANDOM
+#define SRANDOM(seed) srandom(seed)
+#enddif
+
#ifdef BUFSIZ
#undef BUFSIZ
#endif
@@ -1770,9 +1778,9 @@
if (len < 8) {
if (!seeded) {
seeded = 1;
- srandom((int) time((long *)0));
+ SRANDOM((int) time((long *)0));
}
- garbage = random();
+ garbage = RANDOM();
/* insert random garbage */
(void) memcpy(garbage_buf, &garbage, min(sizeof(long),8));
--- krlogind.c 1995/03/10 20:04:34 1.9
+++ krlogind.c 1995/03/13 23:03:40
@@ -210,6 +210,14 @@
#include <krb5/los-proto.h>
#include <kerberosIV/krb.h>
+#ifndef RANDOM
+#define RANDOM() random()
+#endif
+
+#ifndef SRANDOM
+#define SRANDOM(seed) srandom(seed)
+#enddif
+
#ifdef BUFSIZ
#undef BUFSIZ
#endif
@@ -1756,9 +1764,9 @@
if (len < 8) {
if (!seeded) {
seeded = 1;
- srandom((int) time((long *)0));
+ SRANDOM((int) time((long *)0));
}
- garbage = random();
+ garbage = RANDOM();
/* insert random garbage */
(void) memcpy(garbage_buf, &garbage, min(sizeof(long),8));
Jonathan Kamens | OpenVision Technologies, Inc. | jik@cam.ov.com