summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Josefsson <simon@josefsson.org>2008-05-20 06:59:52 +0200
committerSimon Josefsson <simon@josefsson.org>2008-05-20 06:59:52 +0200
commit830cdc0796d0cc7055cef987a50052d0ef3d55cf (patch)
treea0ce47c40a64fbbf685abac8c71a569489658fca
parent10f580d2ee1440695138b52f65e89e70ebf1830e (diff)
downloadgnutls-830cdc0796d0cc7055cef987a50052d0ef3d55cf.tar.gz
Restore umask after opening file.
Suggested by Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>.
-rw-r--r--src/certtool.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/certtool.c b/src/certtool.c
index c6aeb2c59a..bf0990f7a7 100644
--- a/src/certtool.c
+++ b/src/certtool.c
@@ -821,12 +821,22 @@ update_signed_certificate (void)
FILE* safe_open_rw(const char* file)
{
- if (info.privkey_op != 0)
- {
- umask(S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
- }
+ mode_t oldmask;
+ FILE *fh;
+
+ if (info.privkey_op != 0)
+ {
+ oldmask = umask (S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
+ }
+
+ fh = fopen (file, "wb");
+
+ if (info.privkey_op != 0)
+ {
+ umask (oldmask);
+ }
- return fopen (file, "wb");
+ return fh;
}
void