---
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

Reply via email to