@@ -1453,108 +1453,109 @@ action_code_from_atom(ErlNifEnv* env, ERL_NIF_TERM atom)
14531453 // can safely ignore it here and avoid the pesky signed integer UB
14541454
14551455 char buf [32 ];
1456- if (!enif_get_atom (env , atom , buf , sizeof (buf ), ERL_NIF_LATIN1 )) {
1456+ const size_t buffsize = sizeof (buf );
1457+ if (!enif_get_atom (env , atom , buf , buffsize , ERL_NIF_LATIN1 )) {
14571458 return 0 ;
14581459 }
1459- buf [31 ] = 0 ;
1460+ buf [buffsize - 1 ] = 0 ;
14601461
1461- if (strcmp (buf , "create_index" ) == 0 ) {
1462+ if (strncmp (buf , "create_index" , buffsize ) == 0 ) {
14621463 return SQLITE_CREATE_INDEX ;
14631464 }
1464- if (strcmp (buf , "create_table" ) == 0 ) {
1465+ if (strncmp (buf , "create_table" , buffsize ) == 0 ) {
14651466 return SQLITE_CREATE_TABLE ;
14661467 }
1467- if (strcmp (buf , "create_temp_index" ) == 0 ) {
1468+ if (strncmp (buf , "create_temp_index" , buffsize ) == 0 ) {
14681469 return SQLITE_CREATE_TEMP_INDEX ;
14691470 }
1470- if (strcmp (buf , "create_temp_table" ) == 0 ) {
1471+ if (strncmp (buf , "create_temp_table" , buffsize ) == 0 ) {
14711472 return SQLITE_CREATE_TEMP_TABLE ;
14721473 }
1473- if (strcmp (buf , "create_temp_trigger" ) == 0 ) {
1474+ if (strncmp (buf , "create_temp_trigger" , buffsize ) == 0 ) {
14741475 return SQLITE_CREATE_TEMP_TRIGGER ;
14751476 }
1476- if (strcmp (buf , "create_temp_view" ) == 0 ) {
1477+ if (strncmp (buf , "create_temp_view" , buffsize ) == 0 ) {
14771478 return SQLITE_CREATE_TEMP_VIEW ;
14781479 }
1479- if (strcmp (buf , "create_trigger" ) == 0 ) {
1480+ if (strncmp (buf , "create_trigger" , buffsize ) == 0 ) {
14801481 return SQLITE_CREATE_TRIGGER ;
14811482 }
1482- if (strcmp (buf , "create_view" ) == 0 ) {
1483+ if (strncmp (buf , "create_view" , buffsize ) == 0 ) {
14831484 return SQLITE_CREATE_VIEW ;
14841485 }
1485- if (strcmp (buf , "delete" ) == 0 ) {
1486+ if (strncmp (buf , "delete" , buffsize ) == 0 ) {
14861487 return SQLITE_DELETE ;
14871488 }
1488- if (strcmp (buf , "drop_index" ) == 0 ) {
1489+ if (strncmp (buf , "drop_index" , buffsize ) == 0 ) {
14891490 return SQLITE_DROP_INDEX ;
14901491 }
1491- if (strcmp (buf , "drop_table" ) == 0 ) {
1492+ if (strncmp (buf , "drop_table" , buffsize ) == 0 ) {
14921493 return SQLITE_DROP_TABLE ;
14931494 }
1494- if (strcmp (buf , "drop_temp_index" ) == 0 ) {
1495+ if (strncmp (buf , "drop_temp_index" , buffsize ) == 0 ) {
14951496 return SQLITE_DROP_TEMP_INDEX ;
14961497 }
1497- if (strcmp (buf , "drop_temp_table" ) == 0 ) {
1498+ if (strncmp (buf , "drop_temp_table" , buffsize ) == 0 ) {
14981499 return SQLITE_DROP_TEMP_TABLE ;
14991500 }
1500- if (strcmp (buf , "drop_temp_trigger" ) == 0 ) {
1501+ if (strncmp (buf , "drop_temp_trigger" , buffsize ) == 0 ) {
15011502 return SQLITE_DROP_TEMP_TRIGGER ;
15021503 }
1503- if (strcmp (buf , "drop_temp_view" ) == 0 ) {
1504+ if (strncmp (buf , "drop_temp_view" , buffsize ) == 0 ) {
15041505 return SQLITE_DROP_TEMP_VIEW ;
15051506 }
1506- if (strcmp (buf , "drop_trigger" ) == 0 ) {
1507+ if (strncmp (buf , "drop_trigger" , buffsize ) == 0 ) {
15071508 return SQLITE_DROP_TRIGGER ;
15081509 }
1509- if (strcmp (buf , "drop_view" ) == 0 ) {
1510+ if (strncmp (buf , "drop_view" , buffsize ) == 0 ) {
15101511 return SQLITE_DROP_VIEW ;
15111512 }
1512- if (strcmp (buf , "insert" ) == 0 ) {
1513+ if (strncmp (buf , "insert" , buffsize ) == 0 ) {
15131514 return SQLITE_INSERT ;
15141515 }
1515- if (strcmp (buf , "pragma" ) == 0 ) {
1516+ if (strncmp (buf , "pragma" , buffsize ) == 0 ) {
15161517 return SQLITE_PRAGMA ;
15171518 }
1518- if (strcmp (buf , "read" ) == 0 ) {
1519+ if (strncmp (buf , "read" , buffsize ) == 0 ) {
15191520 return SQLITE_READ ;
15201521 }
1521- if (strcmp (buf , "select" ) == 0 ) {
1522+ if (strncmp (buf , "select" , buffsize ) == 0 ) {
15221523 return SQLITE_SELECT ;
15231524 }
1524- if (strcmp (buf , "transaction" ) == 0 ) {
1525+ if (strncmp (buf , "transaction" , buffsize ) == 0 ) {
15251526 return SQLITE_TRANSACTION ;
15261527 }
1527- if (strcmp (buf , "update" ) == 0 ) {
1528+ if (strncmp (buf , "update" , buffsize ) == 0 ) {
15281529 return SQLITE_UPDATE ;
15291530 }
1530- if (strcmp (buf , "attach" ) == 0 ) {
1531+ if (strncmp (buf , "attach" , buffsize ) == 0 ) {
15311532 return SQLITE_ATTACH ;
15321533 }
1533- if (strcmp (buf , "detach" ) == 0 ) {
1534+ if (strncmp (buf , "detach" , buffsize ) == 0 ) {
15341535 return SQLITE_DETACH ;
15351536 }
1536- if (strcmp (buf , "alter_table" ) == 0 ) {
1537+ if (strncmp (buf , "alter_table" , buffsize ) == 0 ) {
15371538 return SQLITE_ALTER_TABLE ;
15381539 }
1539- if (strcmp (buf , "reindex" ) == 0 ) {
1540+ if (strncmp (buf , "reindex" , buffsize ) == 0 ) {
15401541 return SQLITE_REINDEX ;
15411542 }
1542- if (strcmp (buf , "analyze" ) == 0 ) {
1543+ if (strncmp (buf , "analyze" , buffsize ) == 0 ) {
15431544 return SQLITE_ANALYZE ;
15441545 }
1545- if (strcmp (buf , "create_vtable" ) == 0 ) {
1546+ if (strncmp (buf , "create_vtable" , buffsize ) == 0 ) {
15461547 return SQLITE_CREATE_VTABLE ;
15471548 }
1548- if (strcmp (buf , "drop_vtable" ) == 0 ) {
1549+ if (strncmp (buf , "drop_vtable" , buffsize ) == 0 ) {
15491550 return SQLITE_DROP_VTABLE ;
15501551 }
1551- if (strcmp (buf , "function" ) == 0 ) {
1552+ if (strncmp (buf , "function" , buffsize ) == 0 ) {
15521553 return SQLITE_FUNCTION ;
15531554 }
1554- if (strcmp (buf , "savepoint" ) == 0 ) {
1555+ if (strncmp (buf , "savepoint" , buffsize ) == 0 ) {
15551556 return SQLITE_SAVEPOINT ;
15561557 }
1557- if (strcmp (buf , "recursive" ) == 0 ) {
1558+ if (strncmp (buf , "recursive" , buffsize ) == 0 ) {
15581559 return SQLITE_RECURSIVE ;
15591560 }
15601561
@@ -1603,7 +1604,8 @@ exqlite_set_authorizer(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
16031604 // Validate all atoms before mutating state — a bad atom in the list
16041605 // should not clear an existing authorizer as a side effect.
16051606 int new_deny [AUTHORIZER_DENY_SIZE ] = {0 };
1606- ERL_NIF_TERM head , tail = argv [1 ];
1607+ ERL_NIF_TERM head ;
1608+ ERL_NIF_TERM tail = argv [1 ];
16071609 while (enif_get_list_cell (env , tail , & head , & tail )) {
16081610 unsigned int code = action_code_from_atom (env , head );
16091611 if (code == 0 ) {
0 commit comments