Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:Update
dhcp.19770
0027-master-Plugs-a-socket-descriptor-leak-in-O...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0027-master-Plugs-a-socket-descriptor-leak-in-OMAPI.patch of Package dhcp.19770
From 1a6b62fe17a42b00fa234d06b6dfde3d03451894 Mon Sep 17 00:00:00 2001 From: Thomas Markwalder <tmark@isc.org> Date: Thu, 7 Dec 2017 11:23:36 -0500 Subject: [PATCH] [master] Plugs a socket descriptor leak in OMAPI Merges in rt46767. --- RELNOTES | 5 +++++ omapip/buffer.c | 9 +++++++++ omapip/message.c | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/RELNOTES b/RELNOTES index 3e70688..97a9823 100644 --- a/RELNOTES +++ b/RELNOTES @@ -622,6 +622,11 @@ by Eric Young (eay@cryptsoft.com). - Handle an absent resolv.conf file better. [ISC-Bugs #35194] +- Plugged a socket descriptor leak in OMAPI, that can occur when there is + data pending to be written to an OMAPI connection, when the connection + is closed by the reader. + [ISc-Bugs #46767] + Changes since 4.2.0 (new features) - If a client renews before 'dhcp-cache-threshold' percent of its lease diff --git a/omapip/buffer.c b/omapip/buffer.c index f7fdc32..809034d 100644 --- a/omapip/buffer.c +++ b/omapip/buffer.c @@ -566,6 +566,15 @@ isc_result_t omapi_connection_writer (omapi_object_t *h) omapi_buffer_dereference (&buffer, MDL); } } + + /* If we had data left to write when we're told to disconnect, + * we need recall disconnect, now that we're done writing. + * See rt46767. */ + if (c->out_bytes == 0 && c->state == omapi_connection_disconnecting) { + omapi_disconnect (h, 1); + return ISC_R_SHUTTINGDOWN; + } + return ISC_R_SUCCESS; } diff --git a/omapip/message.c b/omapip/message.c index 59ccdc2..21bcfc3 100644 --- a/omapip/message.c +++ b/omapip/message.c @@ -339,7 +339,7 @@ isc_result_t omapi_message_unregister (omapi_object_t *mo) } #ifdef DEBUG_PROTOCOL -static const char *omapi_message_op_name(int op) { +const char *omapi_message_op_name(int op) { switch (op) { case OMAPI_OP_OPEN: return "OMAPI_OP_OPEN"; case OMAPI_OP_REFRESH: return "OMAPI_OP_REFRESH";
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