I merged this patch but it had rejects and I attempted to fix them but
it broke corosync so I reverted the patch.

Could you work up a new version?
thanks
-steve


On Thu, 2009-03-19 at 16:45 -0700, Steven Dake wrote:
> merged
> 
> thanks!
> -steve
> 
> On Thu, 2009-03-19 at 15:09 +0100, Jim Meyering wrote:
> > This is 3/3, but reworked not to require stmt-after-decl support,
> > plus another to fix a bug that would arise when parsing more than 128 paths.
> > 
> > From 412490b7f05d5496b73ecb935c9faeb0ce5c36aa Mon Sep 17 00:00:00 2001
> > From: Jim Meyering <[email protected]>
> > Date: Thu, 19 Mar 2009 14:53:59 +0100
> > Subject: [PATCH 1/2] don't store (and later dereference NULL) upon strdup 
> > failure
> > 
> > (ldso_path_build): Don't store NULL when strdup fails.
> > ---
> >  lcr/lcr_ifact.c |    5 ++++-
> >  1 files changed, 4 insertions(+), 1 deletions(-)
> > 
> > diff --git a/lcr/lcr_ifact.c b/lcr/lcr_ifact.c
> > index 4548b96..f40fab4 100644
> > --- a/lcr/lcr_ifact.c
> > +++ b/lcr/lcr_ifact.c
> > @@ -245,6 +245,7 @@ static int ldso_path_build (const char *path, const 
> > char *filename)
> >     }
> > 
> >     while (fgets (string, sizeof (string), fp)) {
> > +           char *p;
> >             if (strlen(string) > 0)
> >                     string[strlen(string) - 1] = '\0';
> >             if (strncmp (string, "include", strlen ("include")) == 0) {
> > @@ -263,7 +264,9 @@ static int ldso_path_build (const char *path, const 
> > char *filename)
> >                     ldso_path_build (newpath, new_filename);
> >                     continue;
> >             }
> > -           path_list[path_list_entries++] = strdup (string);
> > +           p = strdup (string);
> > +           if (p)
> > +                   path_list[path_list_entries++] = p;
> >     }
> >     fclose(fp);
> >  #endif
> > --
> > 1.6.2.rc1.285.gc5f54
> > 
> > 
> > From facba002e42ea85e6a5be5c2cb9cc38be78716aa Mon Sep 17 00:00:00 2001
> > From: Jim Meyering <[email protected]>
> > Date: Thu, 19 Mar 2009 15:08:03 +0100
> > Subject: [PATCH 2/2] avoid buffer overrun when there are more than 128 path 
> > entries
> > 
> > * lcr_ifact.c (ld_library_path_build, ldso_path_build): Don't store
> > into path_list[path_list_entries] if the counter is too large.
> > ---
> >  lcr/lcr_ifact.c |    7 ++++---
> >  1 files changed, 4 insertions(+), 3 deletions(-)
> > 
> > diff --git a/lcr/lcr_ifact.c b/lcr/lcr_ifact.c
> > index f40fab4..d8e8a4d 100644
> > --- a/lcr/lcr_ifact.c
> > +++ b/lcr/lcr_ifact.c
> > @@ -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);
> >     }
> > @@ -265,7 +266,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;
> >     }
> >     fclose(fp);
> > --
> > 1.6.2.rc1.285.gc5f54
> > _______________________________________________
> > Openais mailing list
> > [email protected]
> > https://lists.linux-foundation.org/mailman/listinfo/openais
> 
> _______________________________________________
> Openais mailing list
> [email protected]
> https://lists.linux-foundation.org/mailman/listinfo/openais

_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to