X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fmetadata%2Fctf-visitor-generate-io-struct.c;h=37d17f5839e2ebb4047a4f338e6634be44c9b2e8;hp=9da7d0d8322d8aecd55590db613de4bdab2388d2;hb=53532829c4c9a9c22eccc72cd84bf5b0b57b33e0;hpb=be60c7fb60112cdabfcfaae5c50d3b937f454ad8 diff --git a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c index 9da7d0d8..37d17f58 100644 --- a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c +++ b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c @@ -1088,6 +1088,12 @@ struct declaration *ctf_declaration_integer_visit(FILE *fd, int depth, return NULL; } alignment = right->u.unary_expression.u.unsigned_constant; + /* Make sure alignment is a power of two */ + if (alignment == 0 || (alignment & (alignment - 1)) != 0) { + fprintf(fd, "[error] %s: align: expecting power of two\n", + __func__); + return NULL; + } has_alignment = 1; } else { fprintf(fd, "[error] %s: unknown attribute name %s\n", @@ -1156,6 +1162,12 @@ struct declaration *ctf_declaration_floating_point_visit(FILE *fd, int depth, return NULL; } alignment = right->u.unary_expression.u.unsigned_constant; + /* Make sure alignment is a power of two */ + if (alignment == 0 || (alignment & (alignment - 1)) != 0) { + fprintf(fd, "[error] %s: align: expecting power of two\n", + __func__); + return NULL; + } has_alignment = 1; } else { fprintf(fd, "[error] %s: unknown attribute name %s\n",