@@ -312,33 +312,36 @@ static char *get_class_info(sepol_security_class_t tclass,
312
312
else
313
313
state_num = mls + 2 ;
314
314
315
- int class_buf_len = 0 ;
316
- int new_class_buf_len ;
317
- int len , buf_used ;
315
+ size_t class_buf_len = 0 ;
316
+ size_t new_class_buf_len ;
317
+ size_t buf_used ;
318
+ int len ;
318
319
char * class_buf = NULL , * p ;
319
320
char * new_class_buf = NULL ;
320
321
321
322
while (1 ) {
322
323
new_class_buf_len = class_buf_len + EXPR_BUF_SIZE ;
323
324
new_class_buf = realloc (class_buf , new_class_buf_len );
324
- if (!new_class_buf )
325
- return NULL ;
325
+ if (!new_class_buf ) {
326
+ free (class_buf );
327
+ return NULL ;
328
+ }
326
329
class_buf_len = new_class_buf_len ;
327
330
class_buf = new_class_buf ;
328
331
buf_used = 0 ;
329
332
p = class_buf ;
330
333
331
334
/* Add statement type */
332
335
len = snprintf (p , class_buf_len - buf_used , "%s" , statements [state_num ]);
333
- if (len < 0 || len >= class_buf_len - buf_used )
336
+ if (len < 0 || ( size_t ) len >= class_buf_len - buf_used )
334
337
continue ;
335
338
336
339
/* Add class entry */
337
340
p += len ;
338
341
buf_used += len ;
339
342
len = snprintf (p , class_buf_len - buf_used , "%s " ,
340
343
policydb -> p_class_val_to_name [tclass - 1 ]);
341
- if (len < 0 || len >= class_buf_len - buf_used )
344
+ if (len < 0 || ( size_t ) len >= class_buf_len - buf_used )
342
345
continue ;
343
346
344
347
/* Add permission entries (validatetrans does not have perms) */
@@ -351,7 +354,7 @@ static char *get_class_info(sepol_security_class_t tclass,
351
354
} else {
352
355
len = snprintf (p , class_buf_len - buf_used , "(" );
353
356
}
354
- if (len < 0 || len >= class_buf_len - buf_used )
357
+ if (len < 0 || ( size_t ) len >= class_buf_len - buf_used )
355
358
continue ;
356
359
break ;
357
360
}
0 commit comments