diff --git a/test/gitinfointoso/getalgoinfo.c b/test/gitinfointoso/getalgoinfo.c index 1ba79d3fb67d7fc2e1ad33eac78ed001ad03e69d..0156b206beb76012567570837000f755c28d4e9f 100644 --- a/test/gitinfointoso/getalgoinfo.c +++ b/test/gitinfointoso/getalgoinfo.c @@ -21,8 +21,11 @@ int main(int argn, char *argv[]) { char sofilename[1024]; char *filename; - char localfilename[1024]; - char algoinfofcnname[1024]; + //char localfilename[1024]; + char *localfilename; + //char algoinfofcnname[1024]; + char *algoinfofcnname; + int size; void *libhnd; void (*algoinfofunc)(struct algoinfo *); @@ -32,10 +35,8 @@ int main(int argn, char *argv[]) { printf("usage %s <scd .so filename>\n", argv[0]); exit(-1); - } - - //snprintf(sofilename, strlen(basename(argv[1]))+3,"./%s", argv[1]); - + } + libhnd=dlopen(argv[1], RTLD_LAZY | RTLD_GLOBAL); if(libhnd==NULL) { @@ -44,8 +45,13 @@ int main(int argn, char *argv[]) } filename=basename(argv[1]); + size=snprintf(localfilename, 0,"%s", filename); + localfilename = malloc(size * sizeof(char)); snprintf(localfilename, strlen(filename)-2,"%s", filename); - snprintf(algoinfofcnname, strlen(localfilename)+13,"%s_GetAlgoInfo", localfilename); + + size=snprintf(algoinfofcnname, 0,"%s_GetAlgoInfo", localfilename); + algoinfofcnname = malloc(size * sizeof(char)); + snprintf(algoinfofcnname, strlen(localfilename)+13,"%s_GetAlgoInfo", localfilename); algoinfofunc=dlsym(libhnd, algoinfofcnname); if(algoinfofunc==NULL) @@ -59,5 +65,7 @@ int main(int argn, char *argv[]) printf("%s (%d characters)\n", ai.text, ai.len); + free(localfilename); + free(algoinfofcnname); }