summaryrefslogtreecommitdiff
path: root/libpam/pam_malloc.c
diff options
context:
space:
mode:
authorJan Rekorajski <baggins@sith.mimuw.edu.pl>2000-12-04 18:31:56 +0000
committerJan Rekorajski <baggins@sith.mimuw.edu.pl>2000-12-04 18:31:56 +0000
commit823d30ab735392f8da3b19513f1d550fadfa3ef8 (patch)
tree662a02a6db40883c56d952fd796f06d0ca2e1469 /libpam/pam_malloc.c
parente2f3fab72e13c7d1f3dd6ee803646a44bda8a6af (diff)
Relevant BUGIDs: 124385
Purpose of commit: security Commit summary: --------------- * use O_NOFOLLOW if available when opening debug log
Diffstat (limited to 'libpam/pam_malloc.c')
-rw-r--r--libpam/pam_malloc.c39
1 files changed, 29 insertions, 10 deletions
diff --git a/libpam/pam_malloc.c b/libpam/pam_malloc.c
index 44d583e7..6b888747 100644
--- a/libpam/pam_malloc.c
+++ b/libpam/pam_malloc.c
@@ -2,8 +2,18 @@
* $Id$
*
* $Log$
- * Revision 1.1 2000/06/20 22:11:18 agmorgan
- * Initial revision
+ * Revision 1.2 2000/12/04 18:31:56 baggins
+ *
+ * Relevant BUGIDs: 124385
+ *
+ * Purpose of commit: security
+ *
+ * Commit summary:
+ * ---------------
+ * * use O_NOFOLLOW if available when opening debug log
+ *
+ * Revision 1.1.1.1 2000/06/20 22:11:18 agmorgan
+ * Imported 0.72 Linux-PAM sources
*
* Revision 1.2 1998/12/27 04:34:23 morgan
* reverting logging functions within libpam. Gone are the externally
@@ -90,18 +100,27 @@ static void set_last_(const char *x, const char *f
static void _pam_output_xdebug_info(void)
{
FILE *logfile;
- int must_close = 1;
-
- if (!(logfile = fopen(_PAM_LOGFILE,"a"))) {
- logfile = stderr;
- must_close = 0;
+ int must_close = 1, fd;
+
+#ifdef O_NOFOLLOW
+ if ((fd = open(_PAM_LOGFILE, O_WRONLY|O_NOFOLLOW|O_APPEND)) != -1) {
+#else
+ if ((fd = open(_PAM_LOGFILE, O_WRONLY|O_APPEND)) != -1) {
+#endif
+ if (!(logfile = fdopen(fd,"a"))) {
+ logfile = stderr;
+ must_close = 0;
+ close(fd);
+ }
+ } else {
+ logfile = stderr;
+ must_close = 0;
}
fprintf(logfile, "[%s:%s(%d)->%s()] ",
last_file, last_call, last_line, last_fn);
- if (must_close) {
- fflush(logfile);
+ fflush(logfile);
+ if (must_close)
fclose(logfile);
- }
}
static void hinder(void)