Skip to content

Commit a55b9c2

Browse files
committed
Fix null pointer dereference
As reported by honggfuzz
1 parent 3e6283f commit a55b9c2

1 file changed

Lines changed: 13 additions & 11 deletions

File tree

src/mat.c

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1730,7 +1730,7 @@ Mat_VarGetSize(matvar_t *matvar)
17301730
void
17311731
Mat_VarPrint( matvar_t *matvar, int printdata )
17321732
{
1733-
size_t nmemb;
1733+
size_t nmemb = 0;
17341734
int i, j;
17351735
const char *class_type_desc[18] = {"Undefined","Cell Array","Structure",
17361736
"Object","Character Array","Sparse Array","Double Precision Array",
@@ -1742,18 +1742,20 @@ Mat_VarPrint( matvar_t *matvar, int printdata )
17421742

17431743
if ( matvar == NULL )
17441744
return;
1745-
if ( matvar->name )
1745+
if ( NULL != matvar->name )
17461746
printf(" Name: %s\n", matvar->name);
17471747
printf(" Rank: %d\n", matvar->rank);
1748-
if ( matvar->rank == 0 )
1748+
if ( matvar->rank <= 0 )
17491749
return;
1750-
printf("Dimensions: %" SIZE_T_FMTSTR,matvar->dims[0]);
1751-
nmemb = matvar->dims[0];
1752-
for ( i = 1; i < matvar->rank; i++ ) {
1753-
printf(" x %" SIZE_T_FMTSTR,matvar->dims[i]);
1754-
nmemb *= matvar->dims[i];
1750+
if ( NULL != matvar->dims ) {
1751+
printf("Dimensions: %" SIZE_T_FMTSTR,matvar->dims[0]);
1752+
nmemb = matvar->dims[0];
1753+
for ( i = 1; i < matvar->rank; i++ ) {
1754+
printf(" x %" SIZE_T_FMTSTR,matvar->dims[i]);
1755+
nmemb *= matvar->dims[i];
1756+
}
1757+
printf("\n");
17551758
}
1756-
printf("\n");
17571759
printf("Class Type: %s",class_type_desc[matvar->class_type]);
17581760
if ( matvar->isComplex )
17591761
printf(" (complex)");
@@ -1816,9 +1818,9 @@ Mat_VarPrint( matvar_t *matvar, int printdata )
18161818

18171819
if ( matvar->rank > 2 ) {
18181820
printf("I can't print more than 2 dimensions\n");
1819-
} else if ( matvar->rank == 1 && matvar->dims[0] > 15 ) {
1821+
} else if ( matvar->rank == 1 && NULL != matvar->dims && matvar->dims[0] > 15 ) {
18201822
printf("I won't print more than 15 elements in a vector\n");
1821-
} else if ( matvar->rank==2 ) {
1823+
} else if ( matvar->rank == 2 && NULL != matvar->dims ) {
18221824
switch( matvar->class_type ) {
18231825
case MAT_C_DOUBLE:
18241826
case MAT_C_SINGLE:

0 commit comments

Comments
 (0)