diff --git a/server/core/config.c b/server/core/config.c index 093e8bc35..390e3153c 100644 --- a/server/core/config.c +++ b/server/core/config.c @@ -209,20 +209,33 @@ int rval; conn = mysql_init(NULL); if (conn) { if (mysql_real_connect(conn, NULL, NULL, NULL, NULL, 0, NULL, 0)) { - char *ptr; - version_string = (char *)mysql_get_server_info(conn); + char *ptr,*tmp; + + tmp = (char *)mysql_get_server_info(conn); unsigned int server_version = mysql_get_server_version(conn); - ptr = strstr(version_string, "-embedded"); + + if(version_string) + free(version_string); + + if((version_string = malloc(strlen(tmp) + strlen("5.5.5-") + 1)) == NULL) + return 0; + + if (server_version >= 100000) + { + strcpy(version_string,"5.5.5-"); + strcat(version_string,tmp); + } + else + { + strcpy(version_string,tmp); + } + + ptr = strstr(tmp, "-embedded"); if (ptr) { *ptr = '\0'; } - if (server_version >= 100000) - { - char* tmpstr = malloc(strlen(version_string) + strlen("5.5.5-") + 1); - strcpy(tmpstr,"5.5.5-"); - strcat(tmpstr,version_string); - version_string = tmpstr; - } + + } mysql_close(conn); }