From 39670695a065d1696c481e290c514ae9d308545c Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Tue, 6 Jun 2017 16:24:53 +0200 Subject: [PATCH] A few other warning from sonarcube --- drivers/iohb.c | 59 ++++++++++++++++++++++++++++----------------- drivers/laplacian.c | 2 +- drivers/mmio.c | 37 +++++++++++++++++++--------- drivers/readijv.c | 6 ++++- 4 files changed, 68 insertions(+), 36 deletions(-) diff --git a/drivers/iohb.c b/drivers/iohb.c index c4aec8d7..ebc84951 100644 --- a/drivers/iohb.c +++ b/drivers/iohb.c @@ -1066,6 +1066,7 @@ int readHB_mat_char(const char* filename, int colptr[], int rowind[], } } + fclose(in_file); return 1; } @@ -1162,12 +1163,14 @@ int readHB_aux_char(const char* filename, const char AuxType, char b[]) if (Nrhs <= 0) { fprintf(stderr, "Warn: Attempt to read auxillary vector(s) when none are present.\n"); + fclose(in_file); return 0; } if (Rhstype[0] != 'F' ) { fprintf(stderr,"Warn: Attempt to read auxillary vector(s) which are not stored in Full form.\n"); fprintf(stderr," Rhs must be specified as full. \n"); + fclose(in_file); return 0; } @@ -1185,10 +1188,12 @@ int readHB_aux_char(const char* filename, const char AuxType, char b[]) if ( AuxType == 'G' && Rhstype[1] != 'G' ) { fprintf(stderr, "Warn: Attempt to read auxillary Guess vector(s) when none are present.\n"); + fclose(in_file); return 0; } if ( AuxType == 'X' && Rhstype[2] != 'X' ) { fprintf(stderr, "Warn: Attempt to read auxillary eXact solution vector(s) when none are present.\n"); + fclose(in_file); return 0; } @@ -1276,10 +1281,8 @@ int readHB_aux_char(const char* filename, const char AuxType, char b[]) col = 0; } } - } - fclose(in_file); return Nrhs; } @@ -1505,19 +1508,24 @@ int ParseIfmt(char* fmt, int* perline, int* width) /* width and number of elements per line. */ /*************************************************/ char *tmp; + *perline = 0; *width = 0; if (fmt == NULL ) { - *perline = 0; *width = 0; return 0; + return 0; } upcase(fmt); tmp = strchr(fmt,'('); - tmp = substr(fmt,tmp - fmt + 1, strchr(fmt,'I') - tmp - 1); - *perline = atoi(tmp); - if (tmp) free(tmp); + if (tmp) { + tmp = substr(fmt,tmp - fmt + 1, strchr(fmt,'I') - tmp - 1); + *perline = atoi(tmp); + free(tmp); + } tmp = strchr(fmt,'I'); - tmp = substr(fmt,tmp - fmt + 1, strchr(fmt,')') - tmp - 1); - *width = atoi(tmp); - if (tmp) free(tmp); + if (tmp) { + tmp = substr(fmt,tmp - fmt + 1, strchr(fmt,')') - tmp - 1); + *width = atoi(tmp); + free(tmp); + } return *width; } @@ -1535,9 +1543,9 @@ int ParseRfmt(char* fmt, int* perline, int* width, int* prec, char* flag) char* tmp3; int len; + *perline = 0; + *width = 0; if (fmt == NULL ) { - *perline = 0; - *width = 0; flag = NULL; return 0; } @@ -1580,18 +1588,25 @@ int ParseRfmt(char* fmt, int* perline, int* width, int* prec, char* flag) tmp = substr(fmt,tmp - fmt + 1, strchr(fmt,*flag) - tmp - 1); *perline = atoi(tmp); free(tmp); - tmp = strchr(fmt,*flag); - if ( strchr(fmt,'.') ) { - char *tmp2 = substr( fmt, strchr(fmt,'.') - fmt + 1, strchr(fmt,')') - strchr(fmt,'.')-1); - *prec = atoi( tmp2 ); - if (tmp2) free(tmp2); - tmp = substr(fmt,tmp - fmt + 1, strchr(fmt,'.') - tmp - 1); - } else { - tmp = substr(fmt,tmp - fmt + 1, strchr(fmt,')') - tmp - 1); + { + char c; + if ( strchr(fmt,'.') ) { + char *tmp2 = substr( fmt, strchr(fmt,'.') - fmt + 1, strchr(fmt,')') - strchr(fmt,'.')-1); + if (tmp2) { + *prec = atoi( tmp2 ); + free(tmp2); + } + c = '.'; + } else { + c = ')'; + } + tmp = strchr(fmt,*flag); + if (tmp) { + tmp = substr(fmt,tmp - fmt + 1, strchr(fmt,c) - tmp - 1); + *width = atoi(tmp); + free(tmp); + } } - *width = atoi(tmp); - - if (tmp) free(tmp); return *width; } diff --git a/drivers/laplacian.c b/drivers/laplacian.c index 03a25dbb..6c94a5ee 100644 --- a/drivers/laplacian.c +++ b/drivers/laplacian.c @@ -92,7 +92,7 @@ laplacian_parse_info( const char *filename, char flt; char *tmpf = strdup( filename ); - if ( sscanf( filename, "%c:%s", &flt, tmpf ) == 2 ) { + if ( sscanf( filename, "%c:%256s", &flt, tmpf ) == 2 ) { filename += 2; switch( flt ){ case 'Z': diff --git a/drivers/mmio.c b/drivers/mmio.c index 809b86da..a966218f 100644 --- a/drivers/mmio.c +++ b/drivers/mmio.c @@ -113,7 +113,7 @@ int mm_read_banner(FILE *f, MM_typecode *matcode) if (fgets(line, MM_MAX_LINE_LENGTH, f) == NULL) return MM_PREMATURE_EOF; - if (sscanf(line, "%s %s %s %s %s", banner, mtx, crd, data_type, + if (sscanf(line, "%63s %63s %63s %63s %63s", banner, mtx, crd, data_type, storage_scheme) != 5) return MM_PREMATURE_EOF; @@ -347,17 +347,21 @@ int mm_read_mtx_crd(char *fname, int *M, int *N, int *nz, int **row, int **col, if ((f = fopen(fname, "r")) == NULL) return MM_COULD_NOT_READ_FILE; - - if ((ret_code = mm_read_banner(f, matcode)) != 0) + if ((ret_code = mm_read_banner(f, matcode)) != 0) { + if (f != stdin) fclose(f); return ret_code; - - if (!(mm_is_valid(*matcode) && mm_is_sparse(*matcode) && - mm_is_matrix(*matcode))) + } + if (!(mm_is_valid(*matcode) && + mm_is_sparse(*matcode) && + mm_is_matrix(*matcode)) ) + { + if (f != stdin) fclose(f); return MM_UNSUPPORTED_TYPE; - - if ((ret_code = mm_read_mtx_crd_size(f, M, N, nz)) != 0) + } + if ((ret_code = mm_read_mtx_crd_size(f, M, N, nz)) != 0) { + if (f != stdin) fclose(f); return ret_code; - + } *row = (int *) malloc(*nz * sizeof(int)); *col = (int *) malloc(*nz * sizeof(int)); @@ -368,21 +372,30 @@ int mm_read_mtx_crd(char *fname, int *M, int *N, int *nz, int **row, int **col, *val = (double *) malloc(*nz * 2 * sizeof(double)); ret_code = mm_read_mtx_crd_data(f, *M, *N, *nz, *row, *col, *val, *matcode); - if (ret_code != 0) return ret_code; + if (ret_code != 0) { + if (f != stdin) fclose(f); + return ret_code; + } } else if (mm_is_real(*matcode)) { *val = (double *) malloc(*nz * sizeof(double)); ret_code = mm_read_mtx_crd_data(f, *M, *N, *nz, *row, *col, *val, *matcode); - if (ret_code != 0) return ret_code; + if (ret_code != 0) { + if (f != stdin) fclose(f); + return ret_code; + } } else if (mm_is_pattern(*matcode)) { ret_code = mm_read_mtx_crd_data(f, *M, *N, *nz, *row, *col, *val, *matcode); - if (ret_code != 0) return ret_code; + if (ret_code != 0) { + if (f != stdin) fclose(f); + return ret_code; + } } if (f != stdin) fclose(f); diff --git a/drivers/readijv.c b/drivers/readijv.c index 0e619fdb..ba3c7d8b 100644 --- a/drivers/readijv.c +++ b/drivers/readijv.c @@ -121,10 +121,12 @@ readIJV( const char *dirname, if (hdrfile == NULL) { fprintf(stderr,"readijv: Cannot open the header file (%s)\n", filename); + free(filename); return PASTIX_ERR_BADPARAMETER; } threeFilesReadHeader(hdrfile, &Nrow, &Ncol, &Nnzero); fclose(hdrfile); + free(filename); } spm->gN = Ncol; @@ -144,6 +146,7 @@ readIJV( const char *dirname, free(filename); return PASTIX_ERR_BADPARAMETER; } + free(filename); sprintf(filename,"%s/ja_threeFiles",dirname); jafile = fopen(filename,"r"); @@ -154,6 +157,7 @@ readIJV( const char *dirname, free(filename); return PASTIX_ERR_BADPARAMETER; } + free(filename); sprintf(filename,"%s/ra_threeFiles",dirname); rafile = fopen(filename,"r"); @@ -165,6 +169,7 @@ readIJV( const char *dirname, free(filename); return PASTIX_ERR_BADPARAMETER; } + free(filename); /* Read the files */ tempcol = spm->colptr; @@ -194,6 +199,5 @@ readIJV( const char *dirname, fclose(iafile); fclose(jafile); fclose(rafile); - free(filename); return PASTIX_SUCCESS; } -- GitLab