#include <roken.h> /* Must come after procmgmt.h */
#include <afs/opr.h>
-
#include "afsutil.h"
#include "fileutil.h"
#include <lwp.h>
#if defined(AFS_PTHREAD_ENV)
-/* can't include rx when we are libutil; it's too early */
-#include <rx/rx.h>
#include <pthread.h>
static pthread_mutex_t serverLogMutex;
-#define LOCK_SERVERLOG() MUTEX_ENTER(&serverLogMutex)
-#define UNLOCK_SERVERLOG() MUTEX_EXIT(&serverLogMutex)
+#define LOCK_SERVERLOG() opr_Verify(pthread_mutex_lock(&serverLogMutex) == 0)
+#define UNLOCK_SERVERLOG() opr_Verify(pthread_mutex_unlock(&serverLogMutex) == 0)
#ifdef AFS_NT40_ENV
#define NULLDEV "NUL"
WriteLogBuffer(char *buf, afs_uint32 len)
{
LOCK_SERVERLOG();
- if (serverLogFD > 0)
- (void)write(serverLogFD, buf, len);
+ if (serverLogFD > 0) {
+ if (write(serverLogFD, buf, len) < 0)
+ ; /* don't care */
+ }
UNLOCK_SERVERLOG();
}
syslog(LOG_INFO, "%s", info);
} else
#endif
- if (serverLogFD > 0)
- (void)write(serverLogFD, tbuffer, len);
+ if (serverLogFD > 0) {
+ if (write(serverLogFD, tbuffer, len) < 0)
+ ; /* don't care */
+ }
UNLOCK_SERVERLOG();
#if !defined(AFS_PTHREAD_ENV) && !defined(AFS_NT40_ENV)
int i, l;
char *commandLine, *cx;
- opr_Assert(argc != 0);
+ opr_Assert(argc > 0);
for (l = i = 0; i < argc; i++)
l += strlen(argv[i]) + 1;
}
}
+void
+LogDesWarning(void)
+{
+ /* The blank newlines help this stand out a bit more in the log. */
+ ViceLog(0, ("\n"));
+ ViceLog(0, ("WARNING: You are using single-DES keys in a KeyFile. Using single-DES\n"));
+ ViceLog(0, ("WARNING: long-term keys is considered insecure, and it is strongly\n"));
+ ViceLog(0, ("WARNING: recommended that you migrate to stronger encryption. See\n"));
+ ViceLog(0, ("WARNING: OPENAFS-SA-2013-003 on http://www.openafs.org/security/\n"));
+ ViceLog(0, ("WARNING: for details.\n"));
+ ViceLog(0, ("\n"));
+}
+
static void*
DebugOn(void *param)
{
goto makefilename;
}
if (!isfifo)
- renamefile(fileName, FileName); /* don't check error code */
+ rk_rename(fileName, FileName); /* don't check error code */
tempfd = open(fileName, O_WRONLY | O_TRUNC | O_CREAT | (isfifo?O_NONBLOCK:0), 0666);
} else {
strcpy(oldName, fileName);
/* don't check error */
if (!isfifo)
- renamefile(fileName, oldName);
- tempfd = open(fileName, O_WRONLY | O_TRUNC | O_CREAT | (isfifo?O_NONBLOCK:0), 0666);
+ rk_rename(fileName, oldName);
+ tempfd = open(fileName, O_WRONLY | O_TRUNC | O_CREAT | O_APPEND | (isfifo?O_NONBLOCK:0), 0666);
}
if (tempfd < 0) {
return -1;
}
/* redirect stdout and stderr so random printf's don't write to data */
- (void)freopen(fileName, "a", stdout);
- (void)freopen(fileName, "a", stderr);
+ if (freopen(fileName, "a", stdout) == NULL)
+ ; /* don't care */
+ if (freopen(fileName, "a", stderr) != NULL) {
#ifdef HAVE_SETVBUF
- setvbuf(stderr, NULL, _IONBF, 0);
+ setvbuf(stderr, NULL, _IONBF, 0);
#else
- setbuf(stderr, NULL);
+ setbuf(stderr, NULL);
#endif
+ }
#if defined(AFS_PTHREAD_ENV)
- MUTEX_INIT(&serverLogMutex, "serverlog", MUTEX_DEFAULT, 0);
+ opr_Verify(pthread_mutex_init(&serverLogMutex, NULL) == 0);
#endif /* AFS_PTHREAD_ENV */
serverLogFD = tempfd;
close(serverLogFD);
serverLogFD = open(fileName, O_WRONLY | O_APPEND | O_CREAT | (isfifo?O_NONBLOCK:0), 0666);
if (serverLogFD > 0) {
- (void)freopen(fileName, "a", stdout);
- (void)freopen(fileName, "a", stderr);
+ if (freopen(fileName, "a", stdout) == NULL)
+ ; /* don't care */
+ if (freopen(fileName, "a", stderr) != NULL) {
#ifdef HAVE_SETVBUF
#ifdef SETVBUF_REVERSED
- setvbuf(stderr, _IONBF, NULL, 0);
+ setvbuf(stderr, _IONBF, NULL, 0);
#else
- setvbuf(stderr, NULL, _IONBF, 0);
+ setvbuf(stderr, NULL, _IONBF, 0);
#endif
#else
- setbuf(stderr, NULL);
+ setbuf(stderr, NULL);
#endif
+ }
}
UNLOCK_SERVERLOG();
return serverLogFD < 0 ? -1 : 0;
}
+
+/*!
+ * Close the server log file.
+ *
+ * \note Must be preceeded by OpenLog().
+ */
+void
+CloseLog(void)
+{
+ LOCK_SERVERLOG();
+#ifndef AFS_NT40_ENV
+ if (serverLogSyslog) {
+ closelog();
+ } else
+#endif
+ if (serverLogFD >= 0) {
+ close(serverLogFD);
+ serverLogFD = -1;
+ }
+ UNLOCK_SERVERLOG();
+}