| @@ -1,73 +1,81 @@ | | | @@ -1,73 +1,81 @@ |
1 | $NetBSD: patch-mgdiff.c,v 1.1 2023/01/02 22:43:53 vins Exp $ | | 1 | $NetBSD: patch-mgdiff.c,v 1.2 2023/01/03 09:01:42 vins Exp $ |
2 | | | 2 | |
3 | Prevent unsafe use of tmpnam(). | | 3 | Prevent unsafe use of tmpnam(). |
4 | | | 4 | |
5 | --- mgdiff.c.orig 1994-09-29 01:56:53.000000000 +0000 | | 5 | --- mgdiff.c.orig 1994-09-29 01:56:53.000000000 +0000 |
6 | +++ mgdiff.c | | 6 | +++ mgdiff.c |
7 | @@ -520,7 +520,7 @@ static void drawit (Widget w, XtPointer | | 7 | @@ -39,6 +39,7 @@ static char copyright[] = "Copyright (c) |
| | | 8 | #include <stdlib.h> |
| | | 9 | #include <assert.h> |
| | | 10 | #include <errno.h> |
| | | 11 | +#include <stdint.h> |
| | | 12 | #include <sys/stat.h> |
| | | 13 | |
| | | 14 | #include <X11/Intrinsic.h> |
| | | 15 | @@ -520,7 +521,7 @@ static void drawit (Widget w, XtPointer |
8 | /* ARGSUSED */ | | 16 | /* ARGSUSED */ |
9 | static void file_cb (Widget w, XtPointer closure, XtPointer call_data) | | 17 | static void file_cb (Widget w, XtPointer closure, XtPointer call_data) |
10 | { | | 18 | { |
11 | - switch ((int) closure) { | | 19 | - switch ((int) closure) { |
12 | + switch ((uintptr_t) closure) { | | 20 | + switch ((uintptr_t) closure) { |
13 | case 0: /* open */ | | 21 | case 0: /* open */ |
14 | toggle_open_sensitive (False); | | 22 | toggle_open_sensitive (False); |
15 | set_cursor (toplevel); | | 23 | set_cursor (toplevel); |
16 | @@ -560,7 +560,7 @@ static void file_cb (Widget w, XtPointer | | 24 | @@ -560,7 +561,7 @@ static void file_cb (Widget w, XtPointer |
17 | /* ARGSUSED */ | | 25 | /* ARGSUSED */ |
18 | static void view_cb (Widget w, XtPointer closure, XtPointer call_data) | | 26 | static void view_cb (Widget w, XtPointer closure, XtPointer call_data) |
19 | { | | 27 | { |
20 | - switch ((int) closure) { | | 28 | - switch ((int) closure) { |
21 | + switch ((uintptr_t) closure) { | | 29 | + switch ((uintptr_t) closure) { |
22 | case 0: /* previous */ | | 30 | case 0: /* previous */ |
23 | prev_diff (NULL, NULL, NULL); | | 31 | prev_diff (NULL, NULL, NULL); |
24 | break; | | 32 | break; |
25 | @@ -582,7 +582,7 @@ static void view_cb (Widget w, XtPointer | | 33 | @@ -582,7 +583,7 @@ static void view_cb (Widget w, XtPointer |
26 | /* ARGSUSED */ | | 34 | /* ARGSUSED */ |
27 | static void select_cb (Widget w, XtPointer closure, XtPointer call_data) | | 35 | static void select_cb (Widget w, XtPointer closure, XtPointer call_data) |
28 | { | | 36 | { |
29 | - switch ((int) closure) { | | 37 | - switch ((int) closure) { |
30 | + switch ((uintptr_t) closure) { | | 38 | + switch ((uintptr_t) closure) { |
31 | case 0: /* left */ | | 39 | case 0: /* left */ |
32 | select_all (LEFT); | | 40 | select_all (LEFT); |
33 | break; | | 41 | break; |
34 | @@ -604,7 +604,7 @@ static void select_cb (Widget w, XtPoint | | 42 | @@ -604,7 +605,7 @@ static void select_cb (Widget w, XtPoint |
35 | /* ARGSUSED */ | | 43 | /* ARGSUSED */ |
36 | static void options_cb (Widget w, XtPointer closure, XtPointer call_data) | | 44 | static void options_cb (Widget w, XtPointer closure, XtPointer call_data) |
37 | { | | 45 | { |
38 | - switch ((int) closure) { | | 46 | - switch ((int) closure) { |
39 | + switch ((uintptr_t) closure) { | | 47 | + switch ((uintptr_t) closure) { |
40 | case 0: /* toggle overview area */ | | 48 | case 0: /* toggle overview area */ |
41 | overview_flag = !overview_flag; | | 49 | overview_flag = !overview_flag; |
42 | if (overview_flag) { | | 50 | if (overview_flag) { |
43 | @@ -660,7 +660,7 @@ static void options_cb (Widget w, XtPoin | | 51 | @@ -660,7 +661,7 @@ static void options_cb (Widget w, XtPoin |
44 | /* ARGSUSED */ | | 52 | /* ARGSUSED */ |
45 | static void helpmenu_cb (Widget w, XtPointer closure, XtPointer call_data) | | 53 | static void helpmenu_cb (Widget w, XtPointer closure, XtPointer call_data) |
46 | { | | 54 | { |
47 | - switch ((int) closure) { | | 55 | - switch ((int) closure) { |
48 | + switch ((uintptr_t) closure) { | | 56 | + switch ((uintptr_t) closure) { |
49 | case 0: /* version */ | | 57 | case 0: /* version */ |
50 | show_version (toplevel); | | 58 | show_version (toplevel); |
51 | break; | | 59 | break; |
52 | @@ -1110,7 +1110,9 @@ int main (int argc, char *argv[]) | | 60 | @@ -1110,7 +1111,9 @@ int main (int argc, char *argv[]) |
53 | */ | | 61 | */ |
54 | case 3: | | 62 | case 3: |
55 | if (strcmp (argv[1], "-") == 0) { | | 63 | if (strcmp (argv[1], "-") == 0) { |
56 | - tempfname = tempnam (NULL, "mgdif"); | | 64 | - tempfname = tempnam (NULL, "mgdif"); |
57 | + char xxx[20]; | | 65 | + char xxx[20]; |
58 | + sprintf(tempfname, "mgdif.XXXXXXXX"); | | 66 | + sprintf(tempfname, "mgdif.XXXXXXXX"); |
59 | + close(mkstemp (tempfname)); | | 67 | + close(mkstemp (tempfname)); |
60 | str_fnamel = strdup (tempfname); | | 68 | str_fnamel = strdup (tempfname); |
61 | str_snamel = strdup (user_filename); | | 69 | str_snamel = strdup (user_filename); |
62 | if (!copy_to_file (stdin, tempfname)) { | | 70 | if (!copy_to_file (stdin, tempfname)) { |
63 | @@ -1131,7 +1133,9 @@ int main (int argc, char *argv[]) | | 71 | @@ -1131,7 +1134,9 @@ int main (int argc, char *argv[]) |
64 | } | | 72 | } |
65 | | | 73 | |
66 | if (strcmp (argv[2], "-") == 0) { | | 74 | if (strcmp (argv[2], "-") == 0) { |
67 | - tempfname = tempnam (NULL, "mgdif"); | | 75 | - tempfname = tempnam (NULL, "mgdif"); |
68 | + char xxx[20]; | | 76 | + char xxx[20]; |
69 | + sprintf(tempfname, "mgdif.XXXXXXXX"); | | 77 | + sprintf(tempfname, "mgdif.XXXXXXXX"); |
70 | + close(mkstemp (tempfname)); | | 78 | + close(mkstemp (tempfname)); |
71 | str_fnamer = strdup (tempfname); | | 79 | str_fnamer = strdup (tempfname); |
72 | str_snamer = strdup (user_filename); | | 80 | str_snamer = strdup (user_filename); |
73 | if (!copy_to_file (stdin, tempfname)) { | | 81 | if (!copy_to_file (stdin, tempfname)) { |