sqc 0.4.13

Software Code Quality - CERT C compliance checker
/*
 * Rule: MEM33-C
 * Source: wiki
 * Status: PASS - Should NOT trigger MEM33-C violation
 */

#include <string.h>
 
struct flex_array_struct {
  size_t num;
  int data[];
};
 
void func(struct flex_array_struct *struct_a,
          struct flex_array_struct *struct_b) {
  if (struct_a->num > struct_b->num) {
    /* Insufficient space; handle error */
    return;
  }
  memcpy(struct_b, struct_a,
         sizeof(struct flex_array_struct) + (sizeof(int)
           * struct_a->num));
}