--- file_not_specified_in_diff +++ file_not_specified_in_diff @@ -, +, @@ --- net-snmp-5.1.1.old/agent/mibgroup/host/hr_sensor.c 2006-04-16 09:01:24.000000000 +0300 +++ net-snmp-5.1.1/agent/mibgroup/host/hr_sensor.c 2006-04-16 09:00:07.000000000 +0300 @@ -240,7 +240,8 @@ { /* variables we may use later */ static long long_ret; - static char *string = 0; + static char string[1024]; + static char *pstring = 0; static oid objid[MAX_OID_LEN]; static struct counter64 c64; @@ -281,19 +282,20 @@ case HRSENSORNAME: - string = malloc(SPRINT_MAX_LEN); - strncpy(string, sensor->name, SPRINT_MAX_LEN); + memset(string,0,sizeof(string)); + strncpy(string, sensor->name, strlen(sensor->name)); *var_len = strlen(string); return (unsigned char *) string; case HRSENSORLABEL: - string = malloc(SPRINT_MAX_LEN); - - if (sensors_get_label_dl (chip_name, sensor->number, &string)) { + memset(string,0,sizeof(string)); + + if (sensors_get_label_dl (chip_name, sensor->number, &pstring)) { return 0; } - + strncpy(string,pstring,sizeof(string)); + free(pstring); *var_len = strlen(string); return (unsigned char *) string; @@ -306,8 +308,8 @@ } else if (sensors_get_feature_dl (chip_name, sensor->number, &value)){ return 0; } - string = malloc(SPRINT_MAX_LEN); - snprintf(string, SPRINT_MAX_LEN, "%f", value); + memset(string,0,sizeof(string)); + sprintf(string, "%f", value); *var_len = strlen(string); return (unsigned char *) string;