Skip to content

Commit 6782b14

Browse files
committed
Use PyModule_AddIntMacro() in signal module
The signal module was using old-style module initialization with potential NULL dereferencing. CID 1295026
1 parent c6cc23d commit 6782b14

File tree

1 file changed

+86
-129
lines changed

1 file changed

+86
-129
lines changed

Modules/signalmodule.c

Lines changed: 86 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,210 +1266,169 @@ PyInit__signal(void)
12661266
}
12671267

12681268
#ifdef SIGHUP
1269-
x = PyLong_FromLong(SIGHUP);
1270-
PyDict_SetItemString(d, "SIGHUP", x);
1271-
Py_XDECREF(x);
1269+
if (PyModule_AddIntMacro(m, SIGHUP))
1270+
goto finally;
12721271
#endif
12731272
#ifdef SIGINT
1274-
x = PyLong_FromLong(SIGINT);
1275-
PyDict_SetItemString(d, "SIGINT", x);
1276-
Py_XDECREF(x);
1273+
if (PyModule_AddIntMacro(m, SIGINT))
1274+
goto finally;
12771275
#endif
12781276
#ifdef SIGBREAK
1279-
x = PyLong_FromLong(SIGBREAK);
1280-
PyDict_SetItemString(d, "SIGBREAK", x);
1281-
Py_XDECREF(x);
1277+
if (PyModule_AddIntMacro(m, SIGBREAK))
1278+
goto finally;
12821279
#endif
12831280
#ifdef SIGQUIT
1284-
x = PyLong_FromLong(SIGQUIT);
1285-
PyDict_SetItemString(d, "SIGQUIT", x);
1286-
Py_XDECREF(x);
1281+
if (PyModule_AddIntMacro(m, SIGQUIT))
1282+
goto finally;
12871283
#endif
12881284
#ifdef SIGILL
1289-
x = PyLong_FromLong(SIGILL);
1290-
PyDict_SetItemString(d, "SIGILL", x);
1291-
Py_XDECREF(x);
1285+
if (PyModule_AddIntMacro(m, SIGILL))
1286+
goto finally;
12921287
#endif
12931288
#ifdef SIGTRAP
1294-
x = PyLong_FromLong(SIGTRAP);
1295-
PyDict_SetItemString(d, "SIGTRAP", x);
1296-
Py_XDECREF(x);
1289+
if (PyModule_AddIntMacro(m, SIGTRAP))
1290+
goto finally;
12971291
#endif
12981292
#ifdef SIGIOT
1299-
x = PyLong_FromLong(SIGIOT);
1300-
PyDict_SetItemString(d, "SIGIOT", x);
1301-
Py_XDECREF(x);
1293+
if (PyModule_AddIntMacro(m, SIGIOT))
1294+
goto finally;
13021295
#endif
13031296
#ifdef SIGABRT
1304-
x = PyLong_FromLong(SIGABRT);
1305-
PyDict_SetItemString(d, "SIGABRT", x);
1306-
Py_XDECREF(x);
1297+
if (PyModule_AddIntMacro(m, SIGABRT))
1298+
goto finally;
13071299
#endif
13081300
#ifdef SIGEMT
1309-
x = PyLong_FromLong(SIGEMT);
1310-
PyDict_SetItemString(d, "SIGEMT", x);
1311-
Py_XDECREF(x);
1301+
if (PyModule_AddIntMacro(m, SIGEMT))
1302+
goto finally;
13121303
#endif
13131304
#ifdef SIGFPE
1314-
x = PyLong_FromLong(SIGFPE);
1315-
PyDict_SetItemString(d, "SIGFPE", x);
1316-
Py_XDECREF(x);
1305+
if (PyModule_AddIntMacro(m, SIGFPE))
1306+
goto finally;
13171307
#endif
13181308
#ifdef SIGKILL
1319-
x = PyLong_FromLong(SIGKILL);
1320-
PyDict_SetItemString(d, "SIGKILL", x);
1321-
Py_XDECREF(x);
1309+
if (PyModule_AddIntMacro(m, SIGKILL))
1310+
goto finally;
13221311
#endif
13231312
#ifdef SIGBUS
1324-
x = PyLong_FromLong(SIGBUS);
1325-
PyDict_SetItemString(d, "SIGBUS", x);
1326-
Py_XDECREF(x);
1313+
if (PyModule_AddIntMacro(m, SIGBUS))
1314+
goto finally;
13271315
#endif
13281316
#ifdef SIGSEGV
1329-
x = PyLong_FromLong(SIGSEGV);
1330-
PyDict_SetItemString(d, "SIGSEGV", x);
1331-
Py_XDECREF(x);
1317+
if (PyModule_AddIntMacro(m, SIGSEGV))
1318+
goto finally;
13321319
#endif
13331320
#ifdef SIGSYS
1334-
x = PyLong_FromLong(SIGSYS);
1335-
PyDict_SetItemString(d, "SIGSYS", x);
1336-
Py_XDECREF(x);
1321+
if (PyModule_AddIntMacro(m, SIGSYS))
1322+
goto finally;
13371323
#endif
13381324
#ifdef SIGPIPE
1339-
x = PyLong_FromLong(SIGPIPE);
1340-
PyDict_SetItemString(d, "SIGPIPE", x);
1341-
Py_XDECREF(x);
1325+
if (PyModule_AddIntMacro(m, SIGPIPE))
1326+
goto finally;
13421327
#endif
13431328
#ifdef SIGALRM
1344-
x = PyLong_FromLong(SIGALRM);
1345-
PyDict_SetItemString(d, "SIGALRM", x);
1346-
Py_XDECREF(x);
1329+
if (PyModule_AddIntMacro(m, SIGALRM))
1330+
goto finally;
13471331
#endif
13481332
#ifdef SIGTERM
1349-
x = PyLong_FromLong(SIGTERM);
1350-
PyDict_SetItemString(d, "SIGTERM", x);
1351-
Py_XDECREF(x);
1333+
if (PyModule_AddIntMacro(m, SIGTERM))
1334+
goto finally;
13521335
#endif
13531336
#ifdef SIGUSR1
1354-
x = PyLong_FromLong(SIGUSR1);
1355-
PyDict_SetItemString(d, "SIGUSR1", x);
1356-
Py_XDECREF(x);
1337+
if (PyModule_AddIntMacro(m, SIGUSR1))
1338+
goto finally;
13571339
#endif
13581340
#ifdef SIGUSR2
1359-
x = PyLong_FromLong(SIGUSR2);
1360-
PyDict_SetItemString(d, "SIGUSR2", x);
1361-
Py_XDECREF(x);
1341+
if (PyModule_AddIntMacro(m, SIGUSR2))
1342+
goto finally;
13621343
#endif
13631344
#ifdef SIGCLD
1364-
x = PyLong_FromLong(SIGCLD);
1365-
PyDict_SetItemString(d, "SIGCLD", x);
1366-
Py_XDECREF(x);
1345+
if (PyModule_AddIntMacro(m, SIGCLD))
1346+
goto finally;
13671347
#endif
13681348
#ifdef SIGCHLD
1369-
x = PyLong_FromLong(SIGCHLD);
1370-
PyDict_SetItemString(d, "SIGCHLD", x);
1371-
Py_XDECREF(x);
1349+
if (PyModule_AddIntMacro(m, SIGCHLD))
1350+
goto finally;
13721351
#endif
13731352
#ifdef SIGPWR
1374-
x = PyLong_FromLong(SIGPWR);
1375-
PyDict_SetItemString(d, "SIGPWR", x);
1376-
Py_XDECREF(x);
1353+
if (PyModule_AddIntMacro(m, SIGPWR))
1354+
goto finally;
13771355
#endif
13781356
#ifdef SIGIO
1379-
x = PyLong_FromLong(SIGIO);
1380-
PyDict_SetItemString(d, "SIGIO", x);
1381-
Py_XDECREF(x);
1357+
if (PyModule_AddIntMacro(m, SIGIO))
1358+
goto finally;
13821359
#endif
13831360
#ifdef SIGURG
1384-
x = PyLong_FromLong(SIGURG);
1385-
PyDict_SetItemString(d, "SIGURG", x);
1386-
Py_XDECREF(x);
1361+
if (PyModule_AddIntMacro(m, SIGURG))
1362+
goto finally;
13871363
#endif
13881364
#ifdef SIGWINCH
1389-
x = PyLong_FromLong(SIGWINCH);
1390-
PyDict_SetItemString(d, "SIGWINCH", x);
1391-
Py_XDECREF(x);
1365+
if (PyModule_AddIntMacro(m, SIGWINCH))
1366+
goto finally;
13921367
#endif
13931368
#ifdef SIGPOLL
1394-
x = PyLong_FromLong(SIGPOLL);
1395-
PyDict_SetItemString(d, "SIGPOLL", x);
1396-
Py_XDECREF(x);
1369+
if (PyModule_AddIntMacro(m, SIGPOLL))
1370+
goto finally;
13971371
#endif
13981372
#ifdef SIGSTOP
1399-
x = PyLong_FromLong(SIGSTOP);
1400-
PyDict_SetItemString(d, "SIGSTOP", x);
1401-
Py_XDECREF(x);
1373+
if (PyModule_AddIntMacro(m, SIGSTOP))
1374+
goto finally;
14021375
#endif
14031376
#ifdef SIGTSTP
1404-
x = PyLong_FromLong(SIGTSTP);
1405-
PyDict_SetItemString(d, "SIGTSTP", x);
1406-
Py_XDECREF(x);
1377+
if (PyModule_AddIntMacro(m, SIGTSTP))
1378+
goto finally;
14071379
#endif
14081380
#ifdef SIGCONT
1409-
x = PyLong_FromLong(SIGCONT);
1410-
PyDict_SetItemString(d, "SIGCONT", x);
1411-
Py_XDECREF(x);
1381+
if (PyModule_AddIntMacro(m, SIGCONT))
1382+
goto finally;
14121383
#endif
14131384
#ifdef SIGTTIN
1414-
x = PyLong_FromLong(SIGTTIN);
1415-
PyDict_SetItemString(d, "SIGTTIN", x);
1416-
Py_XDECREF(x);
1385+
if (PyModule_AddIntMacro(m, SIGTTIN))
1386+
goto finally;
14171387
#endif
14181388
#ifdef SIGTTOU
1419-
x = PyLong_FromLong(SIGTTOU);
1420-
PyDict_SetItemString(d, "SIGTTOU", x);
1421-
Py_XDECREF(x);
1389+
if (PyModule_AddIntMacro(m, SIGTTOU))
1390+
goto finally;
14221391
#endif
14231392
#ifdef SIGVTALRM
1424-
x = PyLong_FromLong(SIGVTALRM);
1425-
PyDict_SetItemString(d, "SIGVTALRM", x);
1426-
Py_XDECREF(x);
1393+
if (PyModule_AddIntMacro(m, SIGVTALRM))
1394+
goto finally;
14271395
#endif
14281396
#ifdef SIGPROF
1429-
x = PyLong_FromLong(SIGPROF);
1430-
PyDict_SetItemString(d, "SIGPROF", x);
1431-
Py_XDECREF(x);
1397+
if (PyModule_AddIntMacro(m, SIGPROF))
1398+
goto finally;
14321399
#endif
14331400
#ifdef SIGXCPU
1434-
x = PyLong_FromLong(SIGXCPU);
1435-
PyDict_SetItemString(d, "SIGXCPU", x);
1436-
Py_XDECREF(x);
1401+
if (PyModule_AddIntMacro(m, SIGXCPU))
1402+
goto finally;
14371403
#endif
14381404
#ifdef SIGXFSZ
1439-
x = PyLong_FromLong(SIGXFSZ);
1440-
PyDict_SetItemString(d, "SIGXFSZ", x);
1441-
Py_XDECREF(x);
1405+
if (PyModule_AddIntMacro(m, SIGXFSZ))
1406+
goto finally;
14421407
#endif
14431408
#ifdef SIGRTMIN
1444-
x = PyLong_FromLong(SIGRTMIN);
1445-
PyDict_SetItemString(d, "SIGRTMIN", x);
1446-
Py_XDECREF(x);
1409+
if (PyModule_AddIntMacro(m, SIGRTMIN))
1410+
goto finally;
14471411
#endif
14481412
#ifdef SIGRTMAX
1449-
x = PyLong_FromLong(SIGRTMAX);
1450-
PyDict_SetItemString(d, "SIGRTMAX", x);
1451-
Py_XDECREF(x);
1413+
if (PyModule_AddIntMacro(m, SIGRTMAX))
1414+
goto finally;
14521415
#endif
14531416
#ifdef SIGINFO
1454-
x = PyLong_FromLong(SIGINFO);
1455-
PyDict_SetItemString(d, "SIGINFO", x);
1456-
Py_XDECREF(x);
1417+
if (PyModule_AddIntMacro(m, SIGINFO))
1418+
goto finally;
14571419
#endif
14581420

14591421
#ifdef ITIMER_REAL
1460-
x = PyLong_FromLong(ITIMER_REAL);
1461-
PyDict_SetItemString(d, "ITIMER_REAL", x);
1462-
Py_DECREF(x);
1422+
if (PyModule_AddIntMacro(m, ITIMER_REAL))
1423+
goto finally;
14631424
#endif
14641425
#ifdef ITIMER_VIRTUAL
1465-
x = PyLong_FromLong(ITIMER_VIRTUAL);
1466-
PyDict_SetItemString(d, "ITIMER_VIRTUAL", x);
1467-
Py_DECREF(x);
1426+
if (PyModule_AddIntMacro(m, ITIMER_VIRTUAL))
1427+
goto finally;
14681428
#endif
14691429
#ifdef ITIMER_PROF
1470-
x = PyLong_FromLong(ITIMER_PROF);
1471-
PyDict_SetItemString(d, "ITIMER_PROF", x);
1472-
Py_DECREF(x);
1430+
if (PyModule_AddIntMacro(m, ITIMER_PROF))
1431+
goto finally;
14731432
#endif
14741433

14751434
#if defined (HAVE_SETITIMER) || defined (HAVE_GETITIMER)
@@ -1480,15 +1439,13 @@ PyInit__signal(void)
14801439
#endif
14811440

14821441
#ifdef CTRL_C_EVENT
1483-
x = PyLong_FromLong(CTRL_C_EVENT);
1484-
PyDict_SetItemString(d, "CTRL_C_EVENT", x);
1485-
Py_DECREF(x);
1442+
if (PyModule_AddIntMacro(m, CTRL_C_EVENT))
1443+
goto finally;
14861444
#endif
14871445

14881446
#ifdef CTRL_BREAK_EVENT
1489-
x = PyLong_FromLong(CTRL_BREAK_EVENT);
1490-
PyDict_SetItemString(d, "CTRL_BREAK_EVENT", x);
1491-
Py_DECREF(x);
1447+
if (PyModule_AddIntMacro(m, CTRL_BREAK_EVENT))
1448+
goto finally;
14921449
#endif
14931450

14941451
#ifdef MS_WINDOWS

0 commit comments

Comments
 (0)