Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP5:GA
ipset.5991
ipset-6.21.1-retry_printing.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ipset-6.21.1-retry_printing.patch of Package ipset.5991
From f06a022685699e608aa5e4157728f7f673aa2f89 Mon Sep 17 00:00:00 2001 From: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> Date: Mon, 22 Sep 2014 07:32:38 +0200 Subject: [PATCH] Retry printing when sprintf fails (reported by Stig Thormodsrud) Instead of returning the length of the string which would have been printed, sprintf sometimes simply returns an error code. Handle the case and flush the printing buffer and retry. --- lib/session.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/lib/session.c b/lib/session.c index cbef026..da162b0 100644 --- a/lib/session.c +++ b/lib/session.c @@ -716,13 +716,7 @@ retry: fmt, args); va_end(args); - if (ret < 0) { - ipset_err(session, - "Internal error at printing to output buffer"); - longjmp(printf_failure, 1); - } - - if (ret >= IPSET_OUTBUFLEN - len) { + if (ret < 0 || ret >= IPSET_OUTBUFLEN - len) { /* Buffer was too small, push it out and retry */ D("print buffer and try again: %u", len); if (loop++) { @@ -750,13 +744,7 @@ retry: ret = fn(session->outbuf + len, IPSET_OUTBUFLEN - len, session->data, opt, session->envopts); - if (ret < 0) { - ipset_err(session, - "Internal error at printing to output buffer"); - longjmp(printf_failure, 1); - } - - if (ret >= IPSET_OUTBUFLEN - len) { + if (ret < 0 || ret >= IPSET_OUTBUFLEN - len) { /* Buffer was too small, push it out and retry */ D("print buffer and try again: %u", len); if (loop++) { -- 2.12.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor