[Pkg-electronics-commits] [openocd] 01/03: Pull "bindto" command from upstream

Jonathan McDowell noodles at moszumanska.debian.org
Sun Jan 21 21:49:25 UTC 2018


This is an automated email from the git hooks/post-receive script.

noodles pushed a commit to branch debian/jessie
in repository openocd.

commit f12c69288020768a6dbaab3fbf2eecb14532c5f1
Author: Jonathan McDowell <noodles at earth.li>
Date:   Thu Jan 18 16:12:18 2018 +0000

    Pull "bindto" command from upstream
    
    OpenOCD listens on all network addresses, exposing its command
    interface to any host that can reach the host on which it is
    running. Pull in the upstream patch which allows this to be
    configured to listen on a specific address (so a subsequent patch
    can lock down the default to localhost).
---
 debian/changelog                |   6 ++
 debian/patches/add-bindto.patch | 130 ++++++++++++++++++++++++++++++++++++++++
 debian/patches/series           |   1 +
 3 files changed, 137 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 0e5c4e2..71f430f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+openocd (0.8.0-4+deb7u1) jessie-security; urgency=high
+
+  * Pull "bindto" command from upstream
+
+ -- Jonathan McDowell <noodles at earth.li>  Sun, 21 Jan 2018 18:50:16 +0000
+
 openocd (0.8.0-4) unstable; urgency=medium
 
   * Enable usb_blaster_libftdi on linux
diff --git a/debian/patches/add-bindto.patch b/debian/patches/add-bindto.patch
new file mode 100644
index 0000000..f23181b
--- /dev/null
+++ b/debian/patches/add-bindto.patch
@@ -0,0 +1,130 @@
+commit 800fe0b8855165d48ae227fd07657e1fa2c1b2d4
+Author: Steven Stallion <stallion at squareup.com>
+Date:   Mon Jul 11 14:18:54 2016 -0500
+
+    server: support binding to arbitrary interfaces
+    
+    Some installations of OpenOCD are used in restricted environments that
+    do not permit binding to public interfaces.
+    
+    This patch does not affect the default behavior to listen on all
+    interfaces, however it does give the option to restrict services by way
+    of the bindto command.
+    
+    Change-Id: Id51bd64b376a8c62dd47b08b4d834872925e6af2
+    Signed-off-by: Steven Stallion <stallion at squareup.com>
+    Reviewed-on: http://openocd.zylin.com/3534
+    Tested-by: jenkins
+    Reviewed-by: Tomas Vanek <vanekt at fbl.cz>
+
+diff --git a/doc/openocd.texi b/doc/openocd.texi
+index 94f1f315..1d517213 100644
+--- a/doc/openocd.texi
++++ b/doc/openocd.texi
+@@ -6389,6 +6389,11 @@ the initial log output channel is stderr.
+ Add @var{directory} to the file/script search path.
+ @end deffn
+ 
++ at deffn Command bindto [name]
++Specify address by name on which to listen for incoming TCP/IP connections.
++By default, OpenOCD will listen on all available interfaces.
++ at end deffn
++
+ @anchor{targetstatehandling}
+ @section Target State handling
+ @cindex reset
+diff --git a/src/server/server.c b/src/server/server.c
+index cdb62851..f6889a01 100644
+--- a/src/server/server.c
++++ b/src/server/server.c
+@@ -37,6 +37,10 @@
+ 
+ #include <signal.h>
+ 
++#ifdef HAVE_NETDB_H
++#include <netdb.h>
++#endif
++
+ #ifndef _WIN32
+ #include <netinet/tcp.h>
+ #endif
+@@ -46,6 +50,9 @@ static int last_signal;
+ /* shutdown_openocd == 1: exit the main event loop, and quit the debugger */
+ static int shutdown_openocd;
+ 
++/* address by name on which to listen for incoming TCP/IP connections */
++static char *bindto_name;
++
+ static int add_connection(struct service *service, struct command_context *cmd_ctx)
+ {
+ 	socklen_t address_size;
+@@ -185,6 +192,7 @@ int add_service(char *name,
+ 	void *priv)
+ {
+ 	struct service *c, **p;
++	struct hostent *hp;
+ 	int so_reuseaddr_option = 1;
+ 
+ 	c = malloc(sizeof(struct service));
+@@ -231,11 +239,21 @@ int add_service(char *name,
+ 
+ 		memset(&c->sin, 0, sizeof(c->sin));
+ 		c->sin.sin_family = AF_INET;
+-		c->sin.sin_addr.s_addr = INADDR_ANY;
++
++		if (bindto_name == NULL)
++			c->sin.sin_addr.s_addr = INADDR_ANY;
++		else {
++			hp = gethostbyname(bindto_name);
++			if (hp == NULL) {
++				LOG_ERROR("couldn't resolve bindto address: %s", bindto_name);
++				exit(-1);
++			}
++			memcpy(&c->sin.sin_addr, hp->h_addr_list[0], hp->h_length);
++		}
+ 		c->sin.sin_port = htons(c->portnumber);
+ 
+ 		if (bind(c->fd, (struct sockaddr *)&c->sin, sizeof(c->sin)) == -1) {
+-			LOG_ERROR("couldn't bind to socket: %s", strerror(errno));
++			LOG_ERROR("couldn't bind %s to socket: %s", name, strerror(errno));
+ 			exit(-1);
+ 		}
+ 
+@@ -588,6 +606,22 @@ COMMAND_HANDLER(handle_poll_period_command)
+ 	return ERROR_OK;
+ }
+ 
++COMMAND_HANDLER(handle_bindto_command)
++{
++	switch (CMD_ARGC) {
++		case 0:
++			command_print(CMD_CTX, "bindto name: %s", bindto_name);
++			break;
++		case 1:
++			free(bindto_name);
++			bindto_name = strdup(CMD_ARGV[0]);
++			break;
++		default:
++			return ERROR_COMMAND_SYNTAX_ERROR;
++	}
++	return ERROR_OK;
++}
++
+ static const struct command_registration server_command_handlers[] = {
+ 	{
+ 		.name = "shutdown",
+@@ -596,6 +630,14 @@ static const struct command_registration server_command_handlers[] = {
+ 		.usage = "",
+ 		.help = "shut the server down",
+ 	},
++	{
++		.name = "bindto",
++		.handler = &handle_bindto_command,
++		.mode = COMMAND_ANY,
++		.usage = "[name]",
++		.help = "Specify address by name on which to listen for "
++		    "incoming TCP/IP connections",
++	},
+ 	COMMAND_REGISTRATION_DONE
+ };
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 9700937..a339f66 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
 #Patch-file list
 remove-ft2232-config.patch
+add-bindto.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-electronics/openocd.git



More information about the Pkg-electronics-commits mailing list