From 0de4fb0cbf90972b119a820707e637a6ad172c4d Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Tue, 16 Jun 2015 03:22:51 +0200 Subject: [PATCH] inetd: Fix naming of built-in service on custom port. Signed-off-by: Joachim Nilsson --- inetd.c | 8 +++++--- inetd.h | 2 +- service.c | 11 +++++------ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/inetd.c b/inetd.c index 5d01d0cb..f3582f23 100644 --- a/inetd.c +++ b/inetd.c @@ -468,7 +468,7 @@ int inetd_filter_str(inetd_t *inetd, char *str, size_t len) * If equivalent service exists already service_register() will instead call * inetd_allow(). */ -int inetd_new(inetd_t *inetd, char *service, char *proto, int forking, void *arg) +int inetd_new(inetd_t *inetd, char *name, char *service, char *proto, int forking, void *arg) { int result; struct servent *sv = NULL; @@ -486,7 +486,9 @@ int inetd_new(inetd_t *inetd, char *service, char *proto, int forking, void *arg inetd->port = ntohs(sv->s_port); inetd->proto = pv->p_proto; inetd->forking = !!forking; - strlcpy(inetd->name, service, sizeof(inetd->name)); + if (!name) + name = service; + strlcpy(inetd->name, name, sizeof(inetd->name)); /* Naïve mapping tcp->stream, udp->dgram, other->dgram */ if (!strcasecmp(sv->s_proto, "tcp")) @@ -500,7 +502,7 @@ int inetd_new(inetd_t *inetd, char *service, char *proto, int forking, void *arg /* Setup socket callback argument */ inetd->arg = arg; - _d("New service %s (default port %d proto %s:%d)", service, inetd->port, sv->s_proto, pv->p_proto); + _d("New service %s (default port %d proto %s:%d)", name, inetd->port, sv->s_proto, pv->p_proto); return 0; } diff --git a/inetd.h b/inetd.h index 2fc35e8a..e2ad8c8a 100644 --- a/inetd.h +++ b/inetd.h @@ -60,7 +60,7 @@ void inetd_stop (inetd_t *inetd); int inetd_respawn (pid_t pid); -int inetd_new (inetd_t *inetd, char *service, char *proto, int forking, void *arg); +int inetd_new (inetd_t *inetd, char *name, char *service, char *proto, int forking, void *arg); int inetd_del (inetd_t *inetd); int inetd_match (inetd_t *inetd, char *service, char *proto); diff --git a/service.c b/service.c index 009756f0..4e7d63d1 100644 --- a/service.c +++ b/service.c @@ -671,11 +671,12 @@ int service_register(int type, char *line, time_t mtime, char *username) #ifndef INETD_DISABLED if (svc_is_inetd(svc)) { - char *iface; + char *iface, *name = service; - _d("Creating new svc job %d inetd %s proto %s iface %s", - svc->job, service, proto, ifaces); - if (inetd_new(&svc->inetd, service, proto, forking, svc)) { + if (svc->inetd.cmd && plugin) + name = plugin->name; + + if (inetd_new(&svc->inetd, name, service, proto, forking, svc)) { _e("Failed registering new inetd service %s.", service); inetd_del(&svc->inetd); return svc_del(svc); @@ -687,9 +688,7 @@ int service_register(int type, char *line, time_t mtime, char *username) return inetd_allow(&svc->inetd, NULL); } - _d("Setting up interface filters for inetd service %s ...", service); for (iface = strtok(ifaces, ","); iface; iface = strtok(NULL, ",")) { - _d("Checking interface name %s ...", iface); if (iface[0] == '!') inetd_deny(&svc->inetd, &iface[1]); else