summaryrefslogtreecommitdiff
path: root/mld
diff options
context:
space:
mode:
Diffstat (limited to 'mld')
-rw-r--r--mld/link.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/mld/link.c b/mld/link.c
index 5696973..5a8e151 100644
--- a/mld/link.c
+++ b/mld/link.c
@@ -7,6 +7,7 @@
#include <string.h>
#include <sys/stat.h>
#include <melf.h>
+#include <fcntl.h>
#include "link.h"
#include "mips.h"
@@ -573,7 +574,13 @@ static int write_file(struct linker *linker)
extern char *current_file;
current_file = linker->args->out_file;
- FILE *out = fopen(linker->args->out_file, "w");
+ int fd = open(linker->args->out_file, O_RDWR | O_CREAT, 0711);
+ if (fd < 0) {
+ PERROR("cannot write");
+ return M_ERROR;
+ }
+
+ FILE *out = fdopen(fd, "w");
if (out == NULL) {
PERROR("cannot write");
return M_ERROR;