Hello community,

here is the log from the commit of package pidentd for openSUSE:Factory checked 
in at 2017-08-08 11:58:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pidentd (Old)
 and      /work/SRC/openSUSE:Factory/.pidentd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pidentd"

Tue Aug  8 11:58:28 2017 rev:19 rq:504898 version:3.0.19

Changes:
--------
--- /work/SRC/openSUSE:Factory/pidentd/pidentd.changes  2012-05-25 
16:18:22.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.pidentd.new/pidentd.changes     2017-08-08 
11:58:32.365940555 +0200
@@ -1,0 +2,30 @@
+Fri Jun 16 07:58:42 UTC 2017 - tchva...@suse.com
+
+- Switch to github url
+- Remove pidentd-SuSE.tar.bz2 as it contains only sysv initscript
+- Remove xinetd service as we should be using socket activation if needed
+  (atm it really is not required so do not provide it by default)
+- Switch to released upstream tarball 3.0.19 used by all other distributions
+- Drop all the patches, upstream seem to merge or include them one
+  way or another:
+  * pidentd-3.1a25-allocfix.diff
+  * pidentd-3.1a25-autoconf.diff
+  * pidentd-3.1a25-autoheader.diff
+  * pidentd-3.1a25-buffer-overflow.diff
+  * pidentd-3.1a25-config.diff
+  * pidentd-3.1a25-fmt.diff
+  * pidentd-3.1a25-ipv6.diff
+  * pidentd-3.1a25-prototypes.diff
+  * pidentd-3.1a25-send.diff
+  * pidentd-3.1a25-warnings-fix.diff
+- Add patch to respect destdir in install:
+  * pidentd-destdir.patch
+- Add patch from debian:
+  * 01-legacy.patch
+- Add patch to fix gcc errors found by brp checks:
+  * pidentd-rpmlint-gcc-checks.patch
+- Add patch to not include date/time in binaries:
+  * pidentd-no-date.patch
+- Install proper systemd service
+
+-------------------------------------------------------------------

Old:
----
  pidentd-3.1a25-allocfix.diff
  pidentd-3.1a25-autoconf.diff
  pidentd-3.1a25-autoheader.diff
  pidentd-3.1a25-buffer-overflow.diff
  pidentd-3.1a25-config.diff
  pidentd-3.1a25-fmt.diff
  pidentd-3.1a25-ipv6.diff
  pidentd-3.1a25-prototypes.diff
  pidentd-3.1a25-send.diff
  pidentd-3.1a25-warnings-fix.diff
  pidentd-3.1a25.tar.bz2
  pidentd-SuSE.tar.bz2
  pidentd.xinetd

New:
----
  01-legacy.patch
  pidentd-destdir.patch
  pidentd-no-date.patch
  pidentd-rpmlint-gcc-checks.patch
  pidentd.service
  v3.0.19.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pidentd.spec ++++++
--- /var/tmp/diff_new_pack.P3tA6q/_old  2017-08-08 11:58:36.245394160 +0200
+++ /var/tmp/diff_new_pack.P3tA6q/_new  2017-08-08 11:58:36.269390780 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package pidentd
 #
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,28 +17,19 @@
 
 
 Name:           pidentd
-PreReq:         %insserv_prereq %fillup_prereq
-Provides:       nkitb:/usr/sbin/in.identd
-Version:        3.1a25
+Version:        3.0.19
 Release:        0
 Summary:        An Implementation of the RFC1413 Identification Server
 License:        GPL-2.0+
 Group:          Productivity/Networking/System
-Url:            http://sf.www.lysator.liu.se/~pen/pidentd/
-Source:         %{name}-%{version}.tar.bz2
-Source1:        %{name}-SuSE.tar.bz2
-Source2:        %{name}.xinetd
-Patch0:         %{name}-%{version}-config.diff
-Patch1:         %{name}-%{version}-allocfix.diff
-Patch2:         %{name}-%{version}-buffer-overflow.diff
-Patch3:         %{name}-%{version}-fmt.diff
-Patch4:         %{name}-%{version}-prototypes.diff
-Patch5:         %{name}-%{version}-autoconf.diff
-Patch6:         %{name}-%{version}-warnings-fix.diff
-Patch7:         %{name}-%{version}-send.diff
-Patch8:         %{name}-%{version}-ipv6.diff
-Patch9:         %{name}-%{version}-autoheader.diff
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+Url:            https://github.com/ptrrkssn/pidentd
+Source:         https://github.com/ptrrkssn/pidentd/archive/v%{version}.tar.gz
+Source1:        pidentd.service
+Patch0:         pidentd-destdir.patch
+Patch1:         01-legacy.patch
+Patch2:         pidentd-rpmlint-gcc-checks.patch
+Patch3:         pidentd-no-date.patch
+BuildRequires:  autoconf
 BuildRequires:  libtool
 Requires:       inet-daemon
 
@@ -47,77 +38,53 @@
 server.  Identd looks up specific TCP/IP connections and returns the
 user name and other information about the connection.
 
-
-
-Authors:
---------
-    Peter Eriksson <p...@lysator.liu.se>
-
-%define prefix   /usr
-
 %prep
-%setup -q -a 1
-%patch0
-%patch1
-%patch2
-%patch3
-%patch4
-%patch5
-%patch6
-%patch7
-%patch8
-%patch9 -p1
+%setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
 
 %build
-# files are not copied by autoreconf since package doesn't use automake
-cp -v /usr/share/automake-*/config.* aux/
-cp -v /usr/share/automake-*/config.* plib/aux/
-aclocal --force
-autoreconf --force --install
-(cd plib
-    libtoolize --force
-    aclocal --force
-    autoconf --force
-)
-CFLAGS="$RPM_OPT_FLAGS -Wall" \
-       ./configure \
-       --prefix=%{prefix} \
-       --sysconfdir=%{_sysconfdir} \
-       --mandir=%{_mandir} \
-       --infodir=%{_infodir} \
-       --with-threads=yes
-make
+autoconf
+%configure
+make %{?_smp_mflags}
 
 %install
-install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man8
-install -d -m 755 $RPM_BUILD_ROOT/etc/xinetd.d
-cp -a SuSE/* $RPM_BUILD_ROOT
-make DESTDIR=$RPM_BUILD_ROOT/ install
-install -m 0644 etc/identd.conf $RPM_BUILD_ROOT/etc/identd.conf
-mv $RPM_BUILD_ROOT%{_sbindir}/identd $RPM_BUILD_ROOT%{_sbindir}/in.identd
-echo ".so man8/identd.8" > $RPM_BUILD_ROOT%{_mandir}/man8/in.identd.8
-install -m 644 %{S:2} $RPM_BUILD_ROOT/etc/xinetd.d/pidentd
+%make_install
+install -D -m 0644 etc/identd.conf %{buildroot}%{_sysconfdir}/identd.conf
+ln -s identd %{buildroot}%{_sbindir}/in.identd
+echo ".so man8/identd.8" > %{buildroot}%{_mandir}/man8/in.identd.8
+
+ln -s service %{buildroot}%{_sbindir}/rcidentd
+install -D -m 0644 %{SOURCE1} %{buildroot}/%{_unitdir}/identd.service
+
+mkdir -p %{buildroot}%{_tmpfilesdir}
+cat > %{buildroot}%{_tmpfilesdir}/pidentd.conf <<EOF
+# See tmpfiles.d(5) for details
+d %{_localstatedir}/run/identd 0755 root root - -
+EOF
 
-%clean
-rm -rf $RPM_BUILD_ROOT
+%pre
+%service_add_pre identd.service
 
 %post
-%{fillup_and_insserv -n identd identd}
+%tmpfiles_create %{_tmpfilesdir}/pidentd.conf
+%service_add_post identd.service
 
 %preun
-%stop_on_removal identd
+%service_del_preun identd.service
 
 %postun
-%restart_on_update identd
-%{insserv_cleanup}
+%service_del_postun identd.service
 
 %files
 %defattr(-,root,root)
-%config(noreplace) /etc/xinetd.d/pidentd
-%config /etc/init.d/identd
-%config /etc/identd.conf
-%doc ChangeLog* FAQ README TODO Y2K doc/
-%doc %{_mandir}/man?/*
+%config %{_sysconfdir}/identd.conf
+%doc ChangeLog* FAQ README
+%{_tmpfilesdir}/pidentd.conf
+%{_unitdir}/identd.service
+%{_mandir}/man?/*
 %{_sbindir}/*
 
 %changelog

++++++ 01-legacy.patch ++++++
Index: pidentd-3.0.19.ds1/INSTALL
===================================================================
--- pidentd-3.0.19.ds1.orig/INSTALL
+++ pidentd-3.0.19.ds1/INSTALL
@@ -75,7 +75,7 @@ The libcrypto library included with his
 
        ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/SSLeay-x.y.z.tar.gz
 
-The libcrypto library is actually the prefered one since it includes
+The libcrypto library is actually the preferred one since it includes
 a good random DES key generator which is used (if found) by the
 Ikeygen program.
 
Index: pidentd-3.0.19.ds1/etc/identd.conf
===================================================================
--- pidentd-3.0.19.ds1.orig/etc/identd.conf
+++ pidentd-3.0.19.ds1/etc/identd.conf
@@ -1,4 +1,4 @@
-# /usr/local/etc/identd.conf - an example configuration file
+# /etc/identd.conf - an example configuration file
 
 
 #-- The syslog facility for error messages
@@ -18,7 +18,7 @@ server:user = nobody
 # server:backlog = 256
 
 #-- Where to write the file containing our process id
-# server:pid-file = "/etc/identd.pid"
+# server:pid-file = "/var/run/identd/identd.pid"
 
 #-- Maximum number of concurrent requests allowed (0 = unlimited)
 # server:max-requests = 0
@@ -28,7 +28,7 @@ server:user = nobody
 #-- Enable some protocol extensions like "VERSION" or "QUIT"
 protocol:extensions = enabled
 
-#-- Allow multiple queries per connection. This slightly breaks RFC1413
+#-- Allow multiple queries per connection
 protocol:multiquery = enabled
 
 #-- Timeout in seconds since connection or last query. Zero = disable
Index: pidentd-3.0.19.ds1/doc/identd.8
===================================================================
--- pidentd-3.0.19.ds1.orig/doc/identd.8
+++ pidentd-3.0.19.ds1/doc/identd.8
@@ -2,11 +2,11 @@
 .\" Copyright (c) 1992-1999 Peter Eriksson, Lysator, Linkoping University.
 .\" This manual page is released into the public domain."
 .\"
-.TH identd 1 "8 Jan 1999"
+.TH identd 8 "8 Jan 1999"
 .SH NAME
-identd, in.identd \- TCP/IP IDENT protocol server
+identd \- TCP/IP IDENT protocol server
 .SH SYNOPSIS
-.B [in.]identd [options]
+.B identd [options]
 .SH DESCRIPTION
 .IX "identd daemon" "" \fLidentd\fP daemon"
 .B Identd
@@ -111,7 +111,7 @@ wish to keep the user names a secret).
 Directs
 .B identd
 to check for a file ".noident" in each home directory for the user which
-the daemon is about to return the user name for. It that file exists then
+the daemon is about to return the user name for. If that file exists then
 the daemon will give the error
 .B HIDDEN-USER
 instead of the normal USERID response.
@@ -134,7 +134,7 @@ processed per session. Each request is s
 the responses will be returned one per line. The connection will not
 be closed until the connecting part closes it's end of the line.
 .SH INSTALLATION
-The prefered way to start
+The preferred way to start
 .B identd
 depends on how it was built.
 .PP
@@ -193,7 +193,9 @@ The configuration file contains a list o
 pairs.
 .TP 10
 .B syslog:facility = FACILITY
-Set which facility to use when sending syslog messages.
+Set which facility to use when sending syslog messages.  See
+.BR syslog.conf (5)
+for more information.
 .TP 10
 .B server:user = USER
 Set what user (and group, from the passwd database) the daemon
@@ -254,8 +256,10 @@ Define the character set returned in rep
 Define the operating system returned in replies. Default: "UNIX"
 .TP 10
 .B result:syslog-level = LEVEL
-If set to anything other than "none", all request replies till
-be sent to the syslog service with the specificed severity level.
+If set to anything other than "none", all requested replies will
+be sent to the syslog service with the specified severity level.  See
+.BR syslog.conf (5)
+for more information.
 Default: none
 .TP 10
 .B result:encrypt = YES/NO
@@ -287,16 +291,16 @@ returns info for outgoing connections, n
 Contains the default configuration options for
 .B identd.
 .TP
-.B /etc/identd.pid
-Contains (if enabled) the process number of the
-.B identd
-daemon.
-.TP
 .B /etc/identd.key
 If compiled with
 .I DES
 encryption enabled, the 1024 first bytes of this file is used to specify
 the secret key for encrypting replies.
+.TP
+.B /var/run/identd/identd.pid
+Contains (if enabled) the process number of the
+.B identd
+daemon.
 .SH AVAILABILITY
 The daemon is free software. You can redistribute it and/or
 modify it as you wish - as long as you don't claim that you wrote
@@ -320,7 +324,5 @@ The author can be contacted at:
 ,
 .BR ikeygen (8)
 ,
-.BR authuser (3)
-,
 .BR inetd.conf (5)
 ,
Index: pidentd-3.0.19.ds1/src/request.c
===================================================================
--- pidentd-3.0.19.ds1.orig/src/request.c
+++ pidentd-3.0.19.ds1/src/request.c
@@ -98,6 +98,13 @@ handle_request(int fd,
        
        switch (kp->status)
        {
+         case 2:
+           send_error(fd,
+                      local_port, remote_port,
+                      "HIDDEN-USER",
+                      remote_addr);
+           break;
+
          case 1:
            send_result(fd, kp);
            break;
@@ -188,8 +195,9 @@ request_thread(void *vp)
        got = s_read(rp->fd, buf+len, sizeof(buf)-len-1);
        if (got < 0)
        {
-           syslog(LOG_ERR, "request_thread: read(%d, ..., %d) failed: %m",
-                  rp->fd, sizeof(buf)-len-1);
+           if (debug)
+               fprintf(stderr, "request_thread: read(%d, ..., %d) failed: %s",
+                       rp->fd, sizeof(buf)-len-1, strerror(errno));
            goto Exit;
        }
 
Index: pidentd-3.0.19.ds1/src/safeio.c
===================================================================
--- pidentd-3.0.19.ds1.orig/src/safeio.c
+++ pidentd-3.0.19.ds1/src/safeio.c
@@ -327,3 +327,18 @@ s_snprintf(char *buf,
 
     return retcode;
 }
+
+
+
+int
+s_poll(struct pollfd *ufds,
+       unsigned int nfds,
+       int timeout)
+{
+    int code;
+
+    while ((code = poll(ufds, nfds, timeout)) == -1 && errno == EINTR)
+       ;
+
+    return code;
+}
Index: pidentd-3.0.19.ds1/src/safeio.h
===================================================================
--- pidentd-3.0.19.ds1.orig/src/safeio.h
+++ pidentd-3.0.19.ds1/src/safeio.h
@@ -15,6 +15,8 @@
 #ifndef PIDENTD_SAFEIO_H
 #define PIDENTD_SAFEIO_H
 
+#include <sys/poll.h>
+
 extern void s_abort(void);
 
 extern int s_open(const char *path, int oflag, ...);
@@ -37,4 +39,5 @@ extern int s_snprintf(char *buf,
                      size_t bufsize,
                      const char *format, ...);
 
+extern int s_poll(struct pollfd *, unsigned int, int);
 #endif
Index: pidentd-3.0.19.ds1/src/main.c
===================================================================
--- pidentd-3.0.19.ds1.orig/src/main.c
+++ pidentd-3.0.19.ds1/src/main.c
@@ -377,7 +377,12 @@ main(int argc, char *argv[])
     {
        if (!debug && pidfile_path != NULL)
            pidfile_create(pidfile_path);
-       
+
+       if (listen_sock < 0)
+       {
+           request_timeout = 0;
+       }
+
        if (server_init() < 0)
        {
            if (debug)
Index: pidentd-3.0.19.ds1/src/server.c
===================================================================
--- pidentd-3.0.19.ds1.orig/src/server.c
+++ pidentd-3.0.19.ds1/src/server.c
@@ -15,11 +15,14 @@
 #include "config.h"
 
 #include <syslog.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/time.h>
 #include <sys/resource.h>
 #include <errno.h>
+#include <unistd.h>
+#include <fcntl.h>
 
 #include "pidentd.h"
 
@@ -115,10 +118,29 @@ server_init(void)
 int
 server_run(void)
 {
+    struct pollfd ufds[1];
     int fd;
-    
+    int timeout = request_timeout <= 0 ? -1 : request_timeout * 1000;
+    int retval;
+
+    if (fcntl(listen_sock, F_SETFL, O_NONBLOCK) == -1)
+    {
+       syslog(LOG_ERR, "fcntl() failed: %m");
+       return -1;
+    }
+
+    ufds[0].fd = listen_sock;
+    ufds[0].events = POLLIN;
     while (1)
     {
+       if ((retval = s_poll(ufds, 1, timeout)) == -1)
+       {
+           syslog(LOG_ERR, "poll() failed: %m");
+           return -1;
+       }
+       else if (retval == 0)
+           break;
+
        fd = s_accept(listen_sock, NULL, NULL);
        if (fd < 0)
        {
@@ -139,4 +161,8 @@ server_run(void)
 
        request_run(fd, 0);
     }
+
+    if (debug)
+       fprintf(stderr, "accept() timed out\n");
+    exit(0);
 }
Index: pidentd-3.0.19.ds1/src/pidentd.h
===================================================================
--- pidentd-3.0.19.ds1.orig/src/pidentd.h
+++ pidentd-3.0.19.ds1/src/pidentd.h
@@ -42,7 +42,7 @@
 #endif
 
 #ifndef PATH_PIDFILE
-#define PATH_PIDFILE "/etc/identd.pid"
+#define PATH_PIDFILE "/var/run/identd/identd.pid"
 #endif
 
 #ifndef PATH_CFGFILE
Index: pidentd-3.0.19.ds1/src/k_linux.c
===================================================================
--- pidentd-3.0.19.ds1.orig/src/k_linux.c
+++ pidentd-3.0.19.ds1/src/k_linux.c
@@ -17,15 +17,28 @@
 #include <stdio.h>
 #include <syslog.h>
 #include <errno.h>
+#include <unistd.h>
 
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
+#include <netinet/tcp.h>
 #include <arpa/inet.h>
 
+#include <linux/types.h>
+#include <linux/netlink.h>
+#include <linux/inet_diag.h>
+
 #include "pidentd.h"
 
+struct kainfo
+{
+    int nlfd;
+    __u32 seq;
+    FILE *proc_net_tcp;
+};
+
 /*
 ** Make sure we are running on a supported OS version
 */
@@ -39,23 +52,85 @@ ka_init(void)
 int
 ka_open(void **misc)
 {
-    FILE *fp;
+    struct kainfo *kp;
+
+    kp = s_malloc(sizeof(*kp));
 
+    kp->seq = 0;
+    kp->nlfd = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_INET_DIAG);
+    if (kp->nlfd >= 0)
+       goto out;
     
-    while ((fp = fopen("/proc/net/tcp", "r")) == NULL && errno == EINTR)
-       ;
+    syslog(LOG_INFO, "netlink failed, fallback to /proc/net/tcp: %m");
+    kp->proc_net_tcp = fopen("/proc/net/tcp", "r");
     
-    if (fp == NULL)
+    if (kp->proc_net_tcp == NULL)
     {
        syslog(LOG_ERR, "fopen(\"/proc/net/tcp\", \"r\"): %m");
        return -1;
     }
 
-    *misc = (void *) fp;
+out:
+    *misc = (void *) kp;
     return 0;
 }
 
 
+static int
+netlink_lookup(struct kainfo *kip, struct kernel *kp)
+{
+    int status;
+    struct {
+       struct nlmsghdr nlh;
+       union {
+               struct inet_diag_req req;
+               struct inet_diag_msg rsp;
+       } u;
+    } buf;
+    struct sockaddr_nl addr;
+
+    memset(&buf, 0, sizeof(buf));
+    buf.nlh.nlmsg_len = NLMSG_ALIGN(NLMSG_LENGTH(sizeof(buf.u.req)));
+    buf.nlh.nlmsg_type = TCPDIAG_GETSOCK;
+    buf.nlh.nlmsg_flags = NLM_F_REQUEST;
+    buf.nlh.nlmsg_seq = ++kip->seq;
+    buf.u.req.idiag_family = AF_INET;
+
+    buf.u.req.id.idiag_dport = kp->remote.sin_port;
+    buf.u.req.id.idiag_sport = kp->local.sin_port;
+    buf.u.req.id.idiag_dst[0] = kp->remote.sin_addr.s_addr;
+    buf.u.req.id.idiag_src[0] = kp->local.sin_addr.s_addr;
+    buf.u.req.id.idiag_cookie[0] = INET_DIAG_NOCOOKIE;
+    buf.u.req.id.idiag_cookie[1] = INET_DIAG_NOCOOKIE;
+
+    status = write(kip->nlfd, &buf, buf.nlh.nlmsg_len);
+    if (status < 0) {
+       syslog(LOG_ERR, "netlink_lookup: write failed: %m");
+       return 3;
+    }
+
+    do {
+       socklen_t alen = sizeof(addr);
+       status = recvfrom(kip->nlfd, &buf, sizeof(buf), 0,
+                               (void *)&addr, &alen);
+       if (status < 0) {
+           if (errno == ENOBUFS)
+               return -1;
+           syslog(LOG_ERR, "netlink_lookup: recvfrom failed: %m");
+           return 3;
+       }
+    } while (addr.nl_pid || buf.nlh.nlmsg_seq != kip->seq);
+
+    if (buf.nlh.nlmsg_type != TCPDIAG_GETSOCK)
+       return 0;
+    if (buf.u.rsp.idiag_state != TCP_ESTABLISHED)
+       return 0;
+
+    kp->euid = buf.u.rsp.idiag_uid;
+    return 1;
+}
+
+
 int 
 ka_lookup(void *vp, struct kernel *kp)
 {
@@ -66,6 +141,9 @@ ka_lookup(void *vp, struct kernel *kp)
     int r_lport, r_rport, mylport, myrport;
     int euid;
     int nra;
+    int status;
+    unsigned long ino;
+    struct kainfo *kip;
     
 /*
  * PSz 11 Dec 02
@@ -94,23 +172,28 @@ ka_lookup(void *vp, struct kernel *kp)
  * 
  * Should we skip lines with just ino, or both uid and ino, zero?
  */
-    unsigned long int ino;
 
-    
+
+    kip = (struct kainfo *)vp;
+    kp->ruid = NO_UID;
+
+    if (kip->nlfd >= 0)
+       return netlink_lookup(kip, kp);
+
     r_rport = ntohs(kp->remote.sin_port);
     r_lport = ntohs(kp->local.sin_port);
     r_raddr = kp->remote.sin_addr.s_addr;
     r_laddr = kp->local.sin_addr.s_addr;
 
-    fp = (FILE *) vp;
+    fp = kip->proc_net_tcp;
 
-    kp->ruid = NO_UID;
     rewind(fp);
 
     /* eat header */
     if (fgets(buf, sizeof(buf)-1,fp) == NULL)
        return -1;
 
+    status = 0;
     while (fgets(buf, sizeof(buf)-1, fp) != NULL)
     {
        nra = sscanf(buf, "%d: %lX:%x %lX:%x %x %lX:%lX %x:%lX %lx %d %ld %lu",
@@ -119,9 +202,10 @@ ka_lookup(void *vp, struct kernel *kp)
                     &euid, &dummy, &ino);
        if (nra >= 12)
        {
-           if (myladdr == r_laddr && mylport == r_lport &&
-               myraddr == r_raddr && myrport == r_rport)
+           if (myladdr == r_laddr && mylport == r_lport)
            {
+               if (myraddr != r_raddr || myrport != r_rport || !ino)
+                   continue;
                if (nra >= 14 && euid == 0 && ino == 0) {
                  /*
                   * Both uid and ino are zero: not even a socket?
@@ -131,11 +215,11 @@ ka_lookup(void *vp, struct kernel *kp)
                  continue;
                }
                kp->euid = euid;
-               return 1;
+               status = 1;
            }
        }
     }
 
-    return -1;
+    return status;
 }
 
Index: pidentd-3.0.19.ds1/src/kernel.c
===================================================================
--- pidentd-3.0.19.ds1.orig/src/kernel.c
+++ pidentd-3.0.19.ds1/src/kernel.c
@@ -107,7 +107,7 @@ kernel_thread(void *vp)
            if (debug)
                fprintf(stderr, "ka_lookup(), attempt = %d, status = %d\n",
                        attempt, kp->status);
-           if (kp->status > 0)
+           if (kp->status >= 0)
                break;
 
            if (attempt > 2 && (attempt & 1) == 1)
++++++ pidentd-destdir.patch ++++++
Index: pidentd-3.0.19/src/Makefile.in
===================================================================
--- pidentd-3.0.19.orig/src/Makefile.in
+++ pidentd-3.0.19/src/Makefile.in
@@ -60,9 +60,9 @@ c_osinfo.o:   gen_osinfo.o support.o safei
 # Installing
 
 install:       $(PROGRAMS)
-       -mkdir -p $(sbindir)
+       -mkdir -p $(DESTDIR)$(sbindir)
        for P in $(PROGRAMS) ; do \
-               $(INSTALL) -m 755 $${P} $(sbindir); \
+               $(INSTALL) -m 755 $${P} $(DESTDIR)$(sbindir); \
        done
 #      -mkdir -p $(etcdir)
 #      $(INSTALL) -m 644 identd.conf $(etcdir)
Index: pidentd-3.0.19/Makefile.in
===================================================================
--- pidentd-3.0.19.orig/Makefile.in
+++ pidentd-3.0.19/Makefile.in
@@ -26,8 +26,8 @@ all identd ibench itest @CRYPTO_PROGRAMS
 
 install:
        @cd src ; $(MAKE) $@ CC="$(CC)" CFLAGS="$(MY_CFLAGS)" 
LDFLAGS="$(LDFLAGS)" install
-       -mkdir -p $(mandir)/man8
-       $(INSTALL) -m 644 $(srcdir)/doc/identd.8 $(mandir)/man8
+       -mkdir -p $(DESTDIR)$(mandir)/man8
+       $(INSTALL) -m 644 $(srcdir)/doc/identd.8 $(DESTDIR)$(mandir)/man8
 
 
 clean mostlyclean:
++++++ pidentd-no-date.patch ++++++
Index: pidentd-3.0.19/src/ikeygen.c
===================================================================
--- pidentd-3.0.19.orig/src/ikeygen.c
+++ pidentd-3.0.19/src/ikeygen.c
@@ -105,8 +105,8 @@ usage(FILE *fp)
 void
 program_header(FILE *fp)
 {
-    fprintf(fp, "[Ikeygen, version %s - %s %s]\n",
-           server_version, __DATE__, __TIME__);
+    fprintf(fp, "[Ikeygen, version %s]\n",
+           server_version);
 }
     
 
Index: pidentd-3.0.19/src/main.c
===================================================================
--- pidentd-3.0.19.orig/src/main.c
+++ pidentd-3.0.19/src/main.c
@@ -88,9 +88,8 @@ usage(FILE *fp)
 static void
 program_header(FILE *fp)
 {
-    fprintf(fp, "[Pidentd, version %s (compiled for %s) - %s %s]\n",
-           server_version, osinfo_build,
-           __DATE__, __TIME__);
+    fprintf(fp, "[Pidentd, version %s (compiled for %s)]\n",
+           server_version, osinfo_build);
 }
 
 void
Index: pidentd-3.0.19/src/send.c
===================================================================
--- pidentd-3.0.19.orig/src/send.c
+++ pidentd-3.0.19/src/send.c
@@ -170,9 +170,9 @@ send_version(int fd,
     char buf[1024], buf2[32];
     
     s_snprintf(buf, sizeof(buf),
-            "0 , 0 : X-VERSION : pidentd %s for %s (%s %s)\r\n",
+            "0 , 0 : X-VERSION : pidentd %s for %s\r\n",
             server_version,
-            osinfo_build, __DATE__, __TIME__);
+            osinfo_build);
     
     s_write(fd, buf, strlen(buf));
     
++++++ pidentd-rpmlint-gcc-checks.patch ++++++
Index: pidentd-3.0.19/src/k_linux.c
===================================================================
--- pidentd-3.0.19.orig/src/k_linux.c
+++ pidentd-3.0.19/src/k_linux.c
@@ -14,6 +14,7 @@
 
 #include "config.h"
 
+#include <string.h>
 #include <stdio.h>
 #include <syslog.h>
 #include <errno.h>
Index: pidentd-3.0.19/src/main.c
===================================================================
--- pidentd-3.0.19.orig/src/main.c
+++ pidentd-3.0.19/src/main.c
@@ -21,6 +21,9 @@
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <grp.h>
 #include <signal.h>
 
 #include "pidentd.h"
++++++ pidentd.service ++++++
[Unit]
Description=The identd server provides a means to determine user identity for 
TCP connection
After=network.target

[Service]
ExecStart=/usr/sbin/identd -i -e -I

[Install]
WantedBy=multi-user.target

Reply via email to