syslog issues
There are several issues with corner cases in syslog.openlog().
syslog_get_argv()swallows exceptions, but not in all cases.- if
identis non UTF-8 encodable,syslog.openlog()fails after setting the global reference toident. Now the C string saved internally in the previous call toopenlog()points to the freed memory. PySys_Audit()can crash ifidentis NULL.- There may be a race condition with
syslog.syslog(), because the global reference toidentis decrefed before setting the new value.
And, since syslog.syslog() releases the GIL, there may be a race condition syslog.syslog() with syslog.openlog() and syslog.closelog() which can decref the global reference to ident.
P.S. @noamcohen97 noticed yet one issue in syslog.syslog() (potential returning a value from a function while an exception is set #95012 (comment)) and fixed it.