]> git.pld-linux.org Git - packages/XFree86.git/blame - XFree86-xlclocale-overflow.patch
- added font-overflows patch from mdk (for integer overflows in libFS)
[packages/XFree86.git] / XFree86-xlclocale-overflow.patch
CommitLineData
5e0ba830
JB
1Index: XlcDL.c
2===================================================================
3RCS file: /home/x-cvs/xc/lib/X11/XlcDL.c,v
4retrieving revision 1.9
5diff -u -r1.9 XlcDL.c
6--- XlcDL.c 2002/11/25 14:04:53 1.9
7+++ xc/lib/X11/XlcDL.c 2003/03/09 18:19:23
8@@ -406,7 +406,7 @@
9
10 if (lc_name == NULL) return (XLCd)NULL;
11
12- if (_XlcLocaleDirName(lc_dir, (char *)lc_name) == (char*)NULL)
13+ if (_XlcLocaleDirName(lc_dir, BUFSIZE, (char *)lc_name) == (char*)NULL)
14 return (XLCd)NULL;
15
16 resolve_object(lc_dir, lc_name);
17@@ -452,7 +452,7 @@
18
19 lc_name = lcd->core->name;
20
21- if (_XlcLocaleDirName(lc_dir, lc_name) == NULL) return (XIM)0;
22+ if (_XlcLocaleDirName(lc_dir, BUFSIZE, lc_name) == NULL) return (XIM)0;
23
24 count = lc_count;
25 for (; count-- > 0; objects_list++) {
26@@ -498,7 +498,7 @@
27
28 lc_name = lcd->core->name;
29
30- if (_XlcLocaleDirName(lc_dir, lc_name) == NULL) return False;
31+ if (_XlcLocaleDirName(lc_dir, BUFSIZE, lc_name) == NULL) return False;
32
33 count = lc_count;
34 for (; count-- > 0; objects_list++) {
35@@ -543,7 +543,7 @@
36 #endif
37
38 lc_name = lcd->core->name;
39- if (_XlcLocaleDirName(lc_dir, lc_name) == NULL) return False;
40+ if (_XlcLocaleDirName(lc_dir, BUFSIZE, lc_name) == NULL) return False;
41
42 count = lc_count;
43 for (; count-- > 0; objects_list++) {
44@@ -610,7 +610,7 @@
45
46 lc_name = lcd->core->name;
47
48- if (_XlcLocaleDirName(lc_dir, lc_name) == NULL) return (XOM)0;
49+ if (_XlcLocaleDirName(lc_dir, BUFSIZE, lc_name) == NULL) return (XOM)0;
50
51 count = lc_count;
52 for (; count-- > 0; objects_list++) {
53Index: XlcPubI.h
54===================================================================
55RCS file: /home/x-cvs/xc/lib/X11/XlcPubI.h,v
56retrieving revision 3.9
57diff -u -r3.9 XlcPubI.h
58--- XlcPubI.h 2001/11/16 00:52:27 3.9
59+++ xc/lib/X11/XlcPubI.h 2003/03/09 18:19:23
60@@ -217,6 +217,7 @@
61 extern char *_XlcLocaleDirName(
62 #if NeedFunctionPrototypes
63 char* /* dir_name */,
64+ size_t, /* dir_len */
65 char* /* lc_name */
66 #endif
67 );
68--- xc/lib/X11/lcFile.c.orig 2003-03-26 17:52:08.000000000 +0100
69+++ xc/lib/X11/lcFile.c 2003-03-26 23:30:55.000000000 +0100
70@@ -429,8 +429,9 @@
71 }
72
73 char *
74-_XlcLocaleDirName(dir_name, lc_name)
75+_XlcLocaleDirName(dir_name, dir_len, lc_name)
76 char *dir_name;
77+ size_t dir_len;
78 char *lc_name;
79 {
80 char dir[PATH_MAX], buf[PATH_MAX], *name = NULL;
81@@ -478,8 +479,15 @@
82 target_dir = args[0];
83 target_name = lc_name;
84 }
85- strcpy(dir_name, target_dir);
86- strcat(dir_name, "/");
87- strcat(dir_name, target_name);
88+ /* snprintf(dir_name, dir_len, "%s/%", target_dir, target_name); */
89+ strncpy(dir_name, target_dir, dir_len - 1);
90+ if (strlen(target_dir) >= dir_len - 1) {
91+ dir_name[dir_len - 1] = '\0';
92+ } else {
93+ strcat(dir_name, "/");
94+ strncat(dir_name, target_name, dir_len - strlen(dir_name) - 1);
95+ if (strlen(target_name) >= dir_len - strlen(dir_name) - 1)
96+ dir_name[dir_len - 1] = '\0';
97+ }
98 return dir_name;
99 }
This page took 0.031476 seconds and 4 git commands to generate.