Hi, Ping....
>This patch do following things:- >1. Fixes bug of adding preloaded libs in search scope of dependent > libraries which results in search scope of few symbols becomes > same for executable and library, so conflict doesn't occur for > those symbols and hence resulted in less number of conflicts. >2. Reduce code redundancy. >3. Buffer Overflow fix. > >Signed-off-by: Maninder Singh <maninder...@samsung.com> >Signed-off-by: Vaneet Narang <v.nar...@samsung.com> >Reviewed-by: Doha Hwang <doha.hw...@samsung.com> >--- > trunk/src/rtld/rtld.c | 27 ++++++++++++++++----------- > 1 files changed, 16 insertions(+), 11 deletions(-) > >diff --git a/trunk/src/rtld/rtld.c b/trunk/src/rtld/rtld.c >index 50461b6..8af5052 100644 >--- a/trunk/src/rtld/rtld.c >+++ b/trunk/src/rtld/rtld.c >@@ -606,7 +606,7 @@ load_dsos (DSO *dso, int host_paths) > { > struct dso_list *dso_list, *dso_list_tail, *cur_dso_ent, *new_dso_ent; > struct stat64 st; >- int total_preload = 0; >+ int total_preload = 0, temp_total_preload = 0; > char * libname[MAX_PRELOADED_LIBS] = {NULL}; > > /* Assume it's static unless we find DT_NEEDED entries */ >@@ -632,19 +632,19 @@ load_dsos (DSO *dso, int host_paths) > > if(dso->ehdr.e_type == ET_EXEC && ld_preload) { > char *next_lib = ld_preload; >- libname[total_preload] = ld_preload; >- total_preload++; >- next_lib=strchr(ld_preload,':'); >- while(next_lib!=NULL){ >- *next_lib = '\0'; >- next_lib++; >- libname[total_preload] = next_lib; >- total_preload++; >- next_lib=strchr(next_lib,':'); >- } >+ while(*next_lib != '\0' && (total_preload < MAX_PRELOADED_LIBS)){ >+ libname[total_preload++] = next_lib; >+ next_lib=strchrnul(next_lib,':'); >+ if(*next_lib == '\0') >+ break; >+ *next_lib = '\0'; >+ next_lib++; >+ } >+ temp_total_preload = total_preload; > } > else { > total_preload = 0; >+ temp_total_preload = 0; > } > while (cur_dso_ent != NULL) > { >@@ -666,6 +666,11 @@ load_dsos (DSO *dso, int host_paths) > { > int ndx, maxndx; > maxndx = data->d_size / cur_dso->shdr[cur_dso->dynamic].sh_entsize; >+ if(!(cur_dso->ehdr.e_type == ET_EXEC)) >+ total_preload = 0; >+ else >+ total_preload = temp_total_preload; >+ > for (ndx = 0; ndx < maxndx + total_preload; ++ndx) > { > >-- >1.7.1 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto