2014-04-08 15:02:52 +02:00
|
|
|
---
|
|
|
|
src/mandb.c | 12 ++++++++++++
|
|
|
|
1 file changed, 12 insertions(+)
|
|
|
|
|
|
|
|
diff --git src/mandb.c src/mandb.c
|
|
|
|
index 86b9e97..5b8c57d 100644
|
2012-10-02 19:06:04 +02:00
|
|
|
--- src/mandb.c
|
2014-04-08 15:02:52 +02:00
|
|
|
+++ src/mandb.c
|
2012-10-02 19:06:04 +02:00
|
|
|
@@ -37,6 +37,7 @@
|
|
|
|
#include <errno.h>
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/stat.h> /* for chmod() */
|
|
|
|
+#include <fcntl.h> /* for open () */
|
|
|
|
#include <dirent.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <signal.h>
|
2014-04-08 15:02:52 +02:00
|
|
|
@@ -422,10 +423,19 @@ static int mandb (const char *catpath, const char *manpath)
|
2012-10-02 19:06:04 +02:00
|
|
|
char *dbname;
|
|
|
|
char *cachedir_tag;
|
|
|
|
struct stat st;
|
|
|
|
+ int fd;
|
|
|
|
|
|
|
|
dbname = mkdbname (catpath);
|
2014-04-08 15:02:52 +02:00
|
|
|
database = xasprintf ("%s/%d", catpath, getpid ());
|
|
|
|
|
2012-10-02 19:06:04 +02:00
|
|
|
+ /* Just for the case that catpath isn't a system catpath */
|
|
|
|
+ drop_effective_privs ();
|
|
|
|
+ fd = open (database, O_WRONLY | O_CREAT | O_EXCL, 0644);
|
|
|
|
+ regain_effective_privs ();
|
|
|
|
+ if (fd < 0)
|
|
|
|
+ error (FATAL, errno, _("can't create a temporary filename"));
|
|
|
|
+ close(fd);
|
|
|
|
+
|
|
|
|
if (!quiet)
|
|
|
|
printf (_("Processing manual pages under %s...\n"), manpath);
|
|
|
|
|
2014-04-08 15:02:52 +02:00
|
|
|
@@ -433,6 +443,7 @@ static int mandb (const char *catpath, const char *manpath)
|
2012-10-02 19:06:04 +02:00
|
|
|
if (stat (cachedir_tag, &st) == -1 && errno == ENOENT) {
|
|
|
|
FILE *cachedir_tag_file;
|
|
|
|
|
|
|
|
+ drop_effective_privs ();
|
|
|
|
cachedir_tag_file = fopen (cachedir_tag, "w");
|
|
|
|
if (cachedir_tag_file) {
|
|
|
|
fputs ("Signature: 8a477f597d28d172789f06886806bc55\n"
|
2014-04-08 15:02:52 +02:00
|
|
|
@@ -444,6 +455,7 @@ static int mandb (const char *catpath, const char *manpath)
|
2012-10-02 19:06:04 +02:00
|
|
|
cachedir_tag_file);
|
|
|
|
fclose (cachedir_tag_file);
|
|
|
|
}
|
|
|
|
+ regain_effective_privs ();
|
|
|
|
}
|
|
|
|
free (cachedir_tag);
|
|
|
|
|
2014-04-08 15:02:52 +02:00
|
|
|
--
|
|
|
|
1.8.4.5
|
|
|
|
|