avoid buffer overrun when there are more than 128 path entries

* lcr_ifact.c (PATH_LIST_SIZE): Define.
(path_list): Use it.
(ld_library_path_build): Don't store into path_list[path_list_entries]
if the counter is too large.
(ldso_path_build): Likewise.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1883 fd59a12c-fef9-0310-b244-a6a79926bd2f
This commit is contained in:
Jim Meyering 2009-03-20 15:48:35 +00:00
parent 4e1239b77e
commit 4c90a7a218

View File

@ -167,7 +167,8 @@ static inline int lcr_lib_loaded (
return (0);
}
const char *path_list[128];
enum { PATH_LIST_SIZE = 128 };
const char *path_list[PATH_LIST_SIZE];
unsigned int path_list_entries = 0;
static void defaults_path_build (void)
@ -201,7 +202,7 @@ static void ld_library_path_build (void)
p_s = strtok_r (my_ld_library_path, ":", &ptrptr);
while (p_s != NULL) {
char *p = strdup (p_s);
if (p) {
if (p && path_list_entries < PATH_LIST_SIZE) {
path_list[path_list_entries++] = p;
}
p_s = strtok_r (NULL, ":", &ptrptr);
@ -266,7 +267,7 @@ static int ldso_path_build (const char *path, const char *filename)
continue;
}
p = strdup (string);
if (p) {
if (p && path_list_entries < PATH_LIST_SIZE) {
path_list[path_list_entries++] = p;
}
}