summaryrefslogtreecommitdiff
path: root/debian/patches/60_inetd_support_argless_services.patch
blob: e5280f18dd03f62e79bbc123115d449fff0c9d3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
From 93e33a312d840eed7a85faa1d5a56b2cd6846001 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@hadrons.org>
Date: Mon, 6 Sep 2010 08:52:59 +0200
Subject: [PATCH] inetd: Inject server name in argv[0] when no arguments are provided

* src/inetd.c (getconfigent): If se_argc == 1 inject the normalized
se_server name into se_argv[0].
---
 src/inetd.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/inetd.c b/src/inetd.c
index 6fe9adf..354ae1d 100644
--- a/src/inetd.c
+++ b/src/inetd.c
@@ -1108,6 +1108,21 @@ getconfigent (FILE *fconfig, const char *file, size_t *line)
 	  sep->se_argv[i] = argv[INETD_SERVER_ARGS + i];
 	  argv[INETD_SERVER_ARGS + i] = 0;
 	}
+
+      /* If no arguments are provided, use server name as argv[0].  */
+      if (sep->se_argc == 1)
+	{
+	  const char *argv0 = NULL;
+
+	  argv0 = strrchr (sep->se_server, '/');
+	  if (argv0)
+	    argv0++;
+	  else
+	    argv0 = sep->se_server;
+
+	  sep->se_argv[0] = newstr (argv0);
+	}
+
       sep->se_argv[i] = NULL;
       break;
     }
-- 
1.7.1