Regid Ichira
2011-Oct-13 22:11 UTC
[Nut-upsdev] 1) A memory leak in drivers/rhino.c 2) Wunused-but-set-variable.patch
I would like to have your comments regarding: 1) drivers/rhino.c ------------------ The following patch addresses some problems in drivers/rhino.c. Or that is what I think. I don't use this hardware. The patch: 1. Eliminates some usefulness definitions. 2. It removes code that evaluate the time. I can't see how the code actually does useful work. 3. The evaluation time code allocates memory. I don't see how that memory is freed. Index: b/drivers/rhino.c ==================================================================--- a/drivers/rhino.c 2011-10-12 03:16:00.000000000 +0300 +++ b/drivers/rhino.c 2011-10-12 12:24:46.000000000 +0300 @@ -85,12 +85,6 @@ static double const FA = -2; /* static double const ConstInt = 250; /* Consumo interno sem o carregador */ static double const Vin = 220; /* Tens?o de entrada */ -static int Day, Month, Year; -static int dian=0, mesn=0, anon=0, weekn=0; -static int ihour,imin, isec; -/* unsigned char DaysOnWeek; */ -/* char seman[4]; */ - /* int FExpansaoBateria; */ /* internal variables */ /* package handshake variables */ @@ -142,19 +136,9 @@ static unsigned char RecPack[37]; #ifdef PORTUGUESE #define M_UNKN "Mod?lo rhino desconhecido\n" #define NO_RHINO "Rhino n?o detectado! abortando ...\n" -#define UPS_DATE "Data no UPS %4d/%02d/%02d\n" -#define SYS_DATE "Data do Sistema %4d/%02d/%02d dia da semana %s\n" -#define ERR_PACK "Pacote errado\n" -#define NO_EVENT "N?o h? eventos\n" -#define UPS_TIME "Hora interna UPS %0d:%02d:%02d\n" #else #define M_UNKN "Unknown rhino model\n" #define NO_RHINO "Rhino not detected! aborting ...\n" -#define UPS_DATE "UPS Date %4d/%02d/%02d\n" -#define SYS_DATE "System Date %4d/%02d/%02d day of week %s\n" -#define ERR_PACK "Wrong package\n" -#define NO_EVENT "No events\n" -#define UPS_TIME "UPS internal Time %0d:%02d:%02d\n" #endif static int @@ -204,14 +188,14 @@ ScanReceivePack( void ) /* model independent data */ - Year = RecPack[31] + ( RecPack[32] * 100 ); - Month = RecPack[30]; - Day = RecPack[29]; + /* Year = RecPack[31] + ( RecPack[32] * 100 ); */ + /* Month = RecPack[30]; */ + /* Day = RecPack[29]; */ /* UPS internal time */ - ihour = RecPack[26]; - imin = RecPack[27]; - isec = RecPack[28]; + /* ihour = RecPack[26]; */ + /* imin = RecPack[27]; */ + /* isec = RecPack[28]; */ /* Flag1 */ /* SobreTemp = ( ( 0x01 & RecPack[33]) = 0x01 ); */ @@ -546,18 +530,8 @@ static void getbaseinfo(void) unsigned char temp[256]; unsigned char Pacote[37]; int tam, i, j=0; - time_t *tmt; - struct tm *now; const char *Model; - tmt = ( time_t * ) malloc( sizeof( time_t ) ); - time( tmt ); - now = localtime( tmt ); - dian = now->tm_mday; - mesn = now->tm_mon+1; - anon = now->tm_year+1900; - weekn = now->tm_wday; - /* trying detect rhino model */ while ( ( !detected ) && ( j < 10 ) ) { @@ -644,14 +618,6 @@ static void getupdateinfo(void) unsigned char temp[256]; int tam; - /* time update */ - time_t *tmt; - struct tm *now; - tmt = ( time_t * ) malloc( sizeof( time_t ) ); - time( tmt ); - now = localtime( tmt ); - /* int hours, mins; hours = now->tm_hour; mins = now->tm_min; */ - temp[0] = 0; /* flush temp buffer */ tam = ser_get_buf_len(upsfd, temp, pacsize, 3, 0); 2) nut-upsdev/2011-October/005608.html -------------------------------------- The patch from above might not apply cleanly. The reason is that I first applied the patch from nut-upsdev/2011-October/005608.html. That patch deals with another issue I see in the rhino.c driver, as well as other files. According to the changelog, the part of it concerns drivers/bestfcom.c was applied on 2011-07-13 to [r3132]. Yet it concerns more files. Although it were not applied to the other files, no one express any opinion why it should not get applied.