[cups-devel] [UNKN] STR #4742: NULL dereference after failing to save job when unloading completed jobs

Tim Waugh noreply at cups.org
Fri Nov 20 03:48:35 PST 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR New]

This bug appears to have been present for quite a long time.

When cupsdUnloadCompletedJobs() calls cupsdSaveJob(), it does not handle
failures correctly.

If saving the job fails (eg no space), job->dirty will remain set. However:

       if (job->dirty)
         cupsdSaveJob(job);

       unload_job(job);

unload_job() will be called regardless of whether the job is now dirty.
This later causes a NULL dereference when cupsdCleanDirty() calls
cupsdSaveJob() again.

I think the fix would be to only call unload_job(job) if the job is now not
dirty:

       if (job->dirty)
         cupsdSaveJob(job);

       if (!job->dirty)
         unload_job(job);

Link: https://www.cups.org/str.php?L4742
Version: 2.1-current
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
Comment: GPGTools - https://gpgtools.org

iQIcBAEBCgAGBQJWTwiTAAoJENujp6sI12IjTGYQAIxXam9EIRRRMxw2OAL7kW2+
iwKjqPSNvkRZ6MLc2NQ7EqPJBwF+Ivj1MBHgiXnDMN0MKGOJxDc9MGlF8+PDU012
sRsGrFCKsiEO059aMmvNTNcurtkqX6rsyRt+qAjjkL0J9P50fLGU6Doit69fHMHO
QhwZ942n/fefq8IhYhOK1vY2BJSksC0AuN3kqx1QskSkierXRfDbMbwkI2+Llpas
7N/xY2Xrx+68a4Ut21ueTOkisIKFcgL/a+323ioQftnFN1IBoIW7H/irC+lkiOHQ
y9PbVk1aFeskzcNlsrTZC/4LV7UJMImeisU3lVvsTlemOtzg4iXvnxnnOlU5hcGf
PGYC3SBosl6t5l/4aSCg7lJr0D0b0VMp7Oceth3j5GyOmDghL0ZyreQOu/M80RR4
M2XIz3qn9G2XOMXLgr5hQObAOsTufZjnAP7RfGp2CFg/CXS1Abu5Xt5k4xody68e
sIgDNmXj9Vob0Zlob/f937TxwI64KkxkZwmy+oHHhXeAVxF/D5onihCSUqL3QPru
QWEM0w64+mPHqgvkO/kEqhj2jyUyTm3olGkyuOvsP5tKypL46hQRJs7nFqk9496a
I5TySPqrw34cazknqPSvMqTfSAsTaeyA/lfzG83wo5CrYdR6dpPModDDSuypcIE6
pj7IFoqdZ67Jh9YQFND3
=IHwM
-----END PGP SIGNATURE-----




More information about the cups mailing list