--- Oops, it seems I missed a few instances of this bug. lib/db/clients/rtr.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-)
diff --git a/lib/db/clients/rtr.c b/lib/db/clients/rtr.c index cff25c6..cfe6687 100644 --- a/lib/db/clients/rtr.c +++ b/lib/db/clients/rtr.c @@ -1778,16 +1778,22 @@ bool db_rtr_ignore_old_full( serial_number_t serial1, serial_number_t serial2) { + // Convert serial1 and serial2 to a type that MySQL can take. + COMPILE_TIME_ASSERT( + TYPE_CAN_HOLD_UINT(unsigned, serial_number_t)); + unsigned serial1_uint = serial1; + unsigned serial2_uint = serial2; + MYSQL_STMT *stmt = conn->stmts[DB_CLIENT_TYPE_RTR][DB_PSTMT_RTR_IGNORE_OLD_FULL]; MYSQL_BIND bind_in[2]; memset(bind_in, 0, sizeof(bind_in)); bind_in[0].buffer_type = MYSQL_TYPE_LONG; - bind_in[0].buffer = &serial1; + bind_in[0].buffer = &serial1_uint; bind_in[0].is_unsigned = (my_bool)1; bind_in[0].is_null = (my_bool *)0; bind_in[1].buffer_type = MYSQL_TYPE_LONG; - bind_in[1].buffer = &serial2; + bind_in[1].buffer = &serial2_uint; bind_in[1].is_unsigned = (my_bool)1; bind_in[1].is_null = (my_bool *)0; @@ -1812,16 +1818,22 @@ bool db_rtr_delete_old_full( serial_number_t serial1, serial_number_t serial2) { + // Convert serial1 and serial2 to a type that MySQL can take. + COMPILE_TIME_ASSERT( + TYPE_CAN_HOLD_UINT(unsigned, serial_number_t)); + unsigned serial1_uint = serial1; + unsigned serial2_uint = serial2; + MYSQL_STMT *stmt = conn->stmts[DB_CLIENT_TYPE_RTR][DB_PSTMT_RTR_DELETE_OLD_FULL]; MYSQL_BIND bind_in[2]; memset(bind_in, 0, sizeof(bind_in)); bind_in[0].buffer_type = MYSQL_TYPE_LONG; - bind_in[0].buffer = &serial1; + bind_in[0].buffer = &serial1_uint; bind_in[0].is_unsigned = (my_bool)1; bind_in[0].is_null = (my_bool *)0; bind_in[1].buffer_type = MYSQL_TYPE_LONG; - bind_in[1].buffer = &serial2; + bind_in[1].buffer = &serial2_uint; bind_in[1].is_unsigned = (my_bool)1; bind_in[1].is_null = (my_bool *)0; @@ -1846,6 +1858,12 @@ bool db_rtr_delete_old_update( serial_number_t serial1, serial_number_t serial2) { + // Convert serial1 and serial2 to a type that MySQL can take. + COMPILE_TIME_ASSERT( + TYPE_CAN_HOLD_UINT(unsigned, serial_number_t)); + unsigned serial1_uint = serial1; + unsigned serial2_uint = serial2; + long long retention_hours = (long long)CONFIG_RPKI_RTR_RETENTION_HOURS_get(); @@ -1858,11 +1876,11 @@ bool db_rtr_delete_old_update( bind_in[0].is_unsigned = (my_bool)0; bind_in[0].is_null = (my_bool *)0; bind_in[1].buffer_type = MYSQL_TYPE_LONG; - bind_in[1].buffer = &serial1; + bind_in[1].buffer = &serial1_uint; bind_in[1].is_unsigned = (my_bool)1; bind_in[1].is_null = (my_bool *)0; bind_in[2].buffer_type = MYSQL_TYPE_LONG; - bind_in[2].buffer = &serial2; + bind_in[2].buffer = &serial2_uint; bind_in[2].is_unsigned = (my_bool)1; bind_in[2].is_null = (my_bool *)0; -- 1.9.1 ------------------------------------------------------------------------------ _______________________________________________ rpstir-devel mailing list rpstir-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rpstir-devel