Your message dated Sat, 29 Oct 2016 04:46:04 +0000
with message-id <[email protected]>
and subject line Bug#842355: Removed package(s) from unstable
has caused the Debian Bug report #710483,
regarding iptraf: -h switch should work without root rights
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
710483: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=710483
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: iptraf
Version: 3.0.0-8.1
Severity: minor
Tags: upstream patch

Dear Maintainer,

the help of iptraf (-h) should be visible without becoming root:

~ iptraf -h
IPTraf Version 3.0.0
Copyright (c) Gerard Paul Java 1997-2004l

This program can be run only by the system administrator

It should however present its help message even for non-root users



-- System Information:
Debian Release: 7.0
  APT prefers proposed-updates
  APT policy: (500, 'proposed-updates'), (500, 'stable'), (300, 'unstable'), 
(100, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.9.4 (SMP w/2 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages iptraf depends on:
ii  libc6        2.13-38
ii  libncurses5  5.9-10
ii  libtinfo5    5.9-10

iptraf recommends no packages.

iptraf suggests no packages.

-- no debconf information
diff -u iptraf-3.0.0/src/iptraf.c iptraf-3.0.0/src/iptraf.c
--- iptraf-3.0.0/src/iptraf.c
+++ iptraf-3.0.0/src/iptraf.c
@@ -479,6 +479,19 @@
     close(fd);
 }
 
+void check_root()
+{
+#ifndef ALLOWUSERS
+    if (getuid() != 0) {
+        fprintf(stderr, "\nIPTraf Version %s\n", VERSION);
+        fprintf(stderr, "Copyright (c) Gerard Paul Java 1997-2004l\n\n");
+        fprintf(stderr,
+                "This program can be run only by the system administrator\n\n");
+        exit(1);
+    }
+#endif
+}
+
 /*
  * Main routine
  */
@@ -492,15 +505,6 @@
     int facilitytime = 0;
     int current_log_interval;
 
-#ifndef ALLOWUSERS
-    if (getuid() != 0) {
-        fprintf(stderr, "\nIPTraf Version %s\n", VERSION);
-        fprintf(stderr, "Copyright (c) Gerard Paul Java 1997-2004l\n\n");
-        fprintf(stderr,
-                "This program can be run only by the system administrator\n\n");
-        exit(1);
-    }
-#endif
 
     setlocale(LC_ALL, "");
 
@@ -521,7 +525,8 @@
                 commandhelp();
                 exit(0);
             } else if (opt == 'f') {
-                removetags();
+		check_root();
+		removetags();
                 remove_sockets();
             } else if (opt == 't') {
                 facilitytime = atoi(optarg);
@@ -573,6 +578,7 @@
             }
         } while ((opt != '?') && (opt != -1));
     }
+    check_root();
     is_first_instance = first_instance();
 
     if ((getenv("TERM") == NULL) && (!daemonized)) {
diff -u iptraf-3.0.0/debian/changelog iptraf-3.0.0/debian/changelog
--- iptraf-3.0.0/debian/changelog
+++ iptraf-3.0.0/debian/changelog
@@ -1,3 +1,10 @@
+iptraf (3.0.0-8.2) UNRELEASED; urgency=low
+
+  * Non-maintainer upload.
+  * patched to query help as non-root.
+
+ -- Michael Eyrich <[email protected]>  Fri, 31 May 2013 10:16:07 +0200
+
 iptraf (3.0.0-8.1) unstable; urgency=low
 
   * Non-maintainer upload.
only in patch2:
unchanged:
--- iptraf-3.0.0.orig/patch-help.diff
+++ iptraf-3.0.0/patch-help.diff
@@ -0,0 +1,56 @@
+--- src/iptraf.c~	2013-05-29 11:33:11.000000000 +0200
++++ src/iptraf.c	2013-05-31 10:06:19.891603025 +0200
+@@ -479,6 +479,19 @@
+     close(fd);
+ }
+ 
++void check_root()
++{
++#ifndef ALLOWUSERS
++    if (getuid() != 0) {
++        fprintf(stderr, "\nIPTraf Version %s\n", VERSION);
++        fprintf(stderr, "Copyright (c) Gerard Paul Java 1997-2004l\n\n");
++        fprintf(stderr,
++                "This program can be run only by the system administrator\n\n");
++        exit(1);
++    }
++#endif
++}
++
+ /*
+  * Main routine
+  */
+@@ -492,15 +505,6 @@
+     int facilitytime = 0;
+     int current_log_interval;
+ 
+-#ifndef ALLOWUSERS
+-    if (getuid() != 0) {
+-        fprintf(stderr, "\nIPTraf Version %s\n", VERSION);
+-        fprintf(stderr, "Copyright (c) Gerard Paul Java 1997-2004l\n\n");
+-        fprintf(stderr,
+-                "This program can be run only by the system administrator\n\n");
+-        exit(1);
+-    }
+-#endif
+ 
+     setlocale(LC_ALL, "");
+ 
+@@ -521,7 +525,8 @@
+                 commandhelp();
+                 exit(0);
+             } else if (opt == 'f') {
+-                removetags();
++                check_root();
++                removetags();
+                 remove_sockets();
+             } else if (opt == 't') {
+                 facilitytime = atoi(optarg);
+@@ -573,6 +578,7 @@
+             }
+         } while ((opt != '?') && (opt != -1));
+     }
++    check_root();
+     is_first_instance = first_instance();
+ 
+     if ((getenv("TERM") == NULL) && (!daemonized)) {
only in patch2:
unchanged:
--- iptraf-3.0.0.orig/.pc/.version
+++ iptraf-3.0.0/.pc/.version
@@ -0,0 +1 @@
+2
only in patch2:
unchanged:
--- iptraf-3.0.0.orig/.pc/.quilt_patches
+++ iptraf-3.0.0/.pc/.quilt_patches
@@ -0,0 +1 @@
+patches
only in patch2:
unchanged:
--- iptraf-3.0.0.orig/.pc/.quilt_series
+++ iptraf-3.0.0/.pc/.quilt_series
@@ -0,0 +1 @@
+series
only in patch2:
unchanged:
--- iptraf-3.0.0.orig/.pc/applied-patches
+++ iptraf-3.0.0/.pc/applied-patches
@@ -0,0 +1 @@
+fix-help-as-non-root.patch
only in patch2:
unchanged:
--- iptraf-3.0.0.orig/.pc/fix-help-as-non-root.patch/src/iptraf.c
+++ iptraf-3.0.0/.pc/fix-help-as-non-root.patch/src/iptraf.c
@@ -0,0 +1,694 @@
+/*
+===========================================================================
+IPTraf
+An IP Network Statistics Utility
+Written by Gerard Paul Java <[email protected]>
+Copyright (c) Gerard Paul Java 1997-2004
+
+Version 3.0.0
+Main Module
+
+---------------------------------------------------------------------------
+This software is open-source; you may redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed WITHOUT ANY WARRANTY; without even the
+implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+See the GNU General Public License in the included COPYING file for
+details.
+---------------------------------------------------------------------------
+*/
+
+#define MAIN_MODULE
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <curses.h>
+#include <panel.h>
+#include <signal.h>
+#include <string.h>
+#include <locale.h>
+#include <time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <errno.h>
+#include <menurt.h>
+#include <winops.h>
+#include <msgboxes.h>
+#include "dirs.h"
+#include "deskman.h"
+#include "fltdefs.h"
+#include "fltselect.h"
+#include "fltmgr.h"
+#include "fltedit.h"
+#include "ifstats.h"
+#include "serv.h"
+#include "options.h"
+#include "promisc.h"
+#include "externs.h"
+#include "instances.h"
+#include "tcptable.h"
+#include "log.h"
+#include "attrs.h"
+#include "rvnamed.h"
+#include "logvars.h"
+#include "getpath.h"
+
+#define WITHALL 1
+#define WITHOUTALL 0
+
+const char *ALLSPEC = "all";
+
+/*
+ * Important globals used throughout the
+ * program.
+ */
+int exitloop = 0;
+int daemonized = 0;
+int facility_running = 0;
+int is_first_instance;
+char active_facility_lockfile[64];
+char active_facility_countfile[64];
+int accept_unsupported_interfaces = 0;
+char graphing_filter[80];
+
+extern void about();
+
+void press_enter_to_continue(void)
+{
+    fprintf(stderr, "Press Enter to continue.\n");
+    getchar();
+}
+
+void clearfiles(char *prefix, char *directory)
+{
+    DIR *dir;
+    struct dirent *dir_entry;
+    char target_name[80];
+
+    dir = opendir(directory);
+
+    if (dir == NULL) {
+        fprintf(stderr, "\nUnable to read directory %s\n%s\n",
+                directory, strerror(errno));
+        press_enter_to_continue();
+        return;
+    }
+
+    do {
+        dir_entry = readdir(dir);
+        if (dir_entry != NULL) {
+            if (strncmp(dir_entry->d_name, prefix, strlen(prefix)) == 0) {
+                snprintf(target_name, 80, "%s/%s", directory,
+                         dir_entry->d_name);
+                unlink(target_name);
+            }
+        }
+    } while (dir_entry != NULL);
+
+    closedir(dir);
+}
+
+void removetags(void)
+{
+    clearfiles("iptraf", LOCKDIR);
+}
+
+void remove_sockets(void)
+{
+    clearfiles(SOCKET_PREFIX, WORKDIR);
+}
+
+/*
+ * Handlers for the TERM signal and HUP signals.  There's nothing we can do
+ * for the KILL.
+ */
+
+void term_signal_handler(int signo)
+{
+    erase();
+    refresh();
+    endwin();
+
+    if (signo != SIGHUP)
+        fprintf(stderr, "IPTraf process %u exiting on signal %d\n\n",
+                getpid(), signo);
+
+    if (active_facility_lockfile[0] != '\0') {
+        unlink(active_facility_lockfile);
+        adjust_instance_count(PROCCOUNTFILE, -1);
+        if (active_facility_countfile[0] != '\0')
+            adjust_instance_count(active_facility_countfile, -1);
+    }
+
+    if (is_first_instance)
+        unlink(IPTIDFILE);
+
+    exit(1);
+}
+
+/* 
+ * Handler for the SIGSEGV, Segmentation Fault.  Tries to clear the screen
+ * and issue a better message than "Segmentation fault".  May not always
+ * clean up properly.
+ */
+
+void segvhandler()
+{
+    erase();
+    refresh();
+    endwin();
+    fprintf(stderr, "Fatal: memory allocation error\n\n");
+    fprintf(stderr,
+            "If you suspect a bug, please report the exact circumstances under which this\n");
+    fprintf(stderr,
+            "error was generated.  If possible, include gdb or strace data which may point\n");
+    fprintf(stderr,
+            "out where the error occured.  Bug reports may be sent in to [email protected].\n\n");
+    fprintf(stderr,
+            "An attempt will be made to clear all lock files, but if stale lock files\n");
+    fprintf(stderr,
+            "remain, exit all other instances of IPTraf and restart with the -f\n");
+    fprintf(stderr, "command-line parameter.\n\n");
+    fprintf(stderr, "IPTraf process %u aborting on signal 11.\n\n",
+            getpid());
+
+    if (active_facility_lockfile[0] != '\0')
+        unlink(active_facility_lockfile);
+
+    if (is_first_instance)
+        unlink(IPTIDFILE);
+
+    if (active_facility_lockfile[0] != '\0') {
+        unlink(active_facility_lockfile);
+        adjust_instance_count(PROCCOUNTFILE, -1);
+        if (active_facility_countfile[0] != '\0')
+            adjust_instance_count(active_facility_countfile, -1);
+    }
+
+    exit(2);
+}
+
+/*
+ * USR2 handler.  Used to normally exit a daemonized facility.
+ */
+
+void term_usr2_handler()
+{
+    exitloop = 1;
+}
+
+void init_break_menu(struct MENU *break_menu)
+{
+    tx_initmenu(break_menu, 6, 20, (LINES - 6) / 2, COLS / 2,
+                BOXATTR, STDATTR, HIGHATTR, BARSTDATTR, BARHIGHATTR,
+                DESCATTR);
+    tx_additem(break_menu, " By packet ^s^ize",
+               "Displays packet counts by packet size range");
+    tx_additem(break_menu, " By TCP/UDP ^p^ort",
+               "Displays packet and byte counts by service port");
+    tx_additem(break_menu, NULL, NULL);
+    tx_additem(break_menu, " E^x^it menu", "Return to main menu");
+}
+
+/*
+ * Get the ball rolling: The program interface routine.
+ */
+
+void program_interface(struct OPTIONS *options,
+                       int opt, char *optarg, int facilitytime)
+{
+    struct MENU menu;
+    struct MENU break_menu;
+
+    int endloop = 0;
+    int row = 1;
+    int break_row = 1;
+    int aborted;
+    int break_aborted;
+
+    struct filterstate ofilter;
+    struct ffnode *fltfiles;
+
+    char ifname[10];
+    char *ifptr = NULL;
+    struct porttab *ports;
+
+    draw_desktop();
+
+    attrset(STATUSBARATTR);
+    mvprintw(0, 1, "IPTraf");
+
+    /*
+     * Load saved filter or graphing filter if specified
+     */
+    if (graphing_logfile[0] != '\0') {
+        loadfilterlist(&fltfiles);
+        memset(&ofilter, 0, sizeof(struct filterstate));
+        loadfilter(pickfilterbyname(fltfiles, graphing_filter),
+                   &(ofilter.fl), FLT_RESOLVE);
+    } else {
+        loadfilters(&ofilter);
+        indicate("");
+    }
+
+    loadaddports(&ports);
+
+    if (opt == 0) {
+        attrset(STATUSBARATTR);
+        mvprintw(LINES - 1, 1, PLATFORM);
+        about();
+
+        tx_initmenu(&menu, 13, 35, (LINES - 14) / 2, (COLS - 35) / 2,
+                    BOXATTR, STDATTR, HIGHATTR, BARSTDATTR, BARHIGHATTR,
+                    DESCATTR);
+
+        tx_additem(&menu, " IP traffic ^m^onitor",
+                   "Displays current IP traffic information");
+        tx_additem(&menu, " General interface ^s^tatistics",
+                   "Displays some statistics for attached interfaces");
+        tx_additem(&menu, " ^D^etailed interface statistics",
+                   "Displays more statistics for a selected interface");
+        tx_additem(&menu, " Statistical ^b^reakdowns...",
+                   "Facilities for traffic counts by packet size or TCP/UDP port");
+        tx_additem(&menu, " ^L^AN station monitor",
+                   "Displays statistics on detected LAN stations");
+        tx_additem(&menu, NULL, NULL);
+        tx_additem(&menu, " ^F^ilters...",
+                   "Allows you to select traffic display and logging criteria");
+        tx_additem(&menu, NULL, NULL);
+        tx_additem(&menu, " C^o^nfigure...",
+                   "Set various program options");
+        tx_additem(&menu, NULL, NULL);
+        tx_additem(&menu, " E^x^it", "Exits program");
+
+        endloop = 0;
+
+        do {
+            tx_showmenu(&menu);
+            tx_operatemenu(&menu, &row, &aborted);
+
+            switch (row) {
+            case 1:
+                selectiface(ifname, WITHALL, &aborted);
+                if (!aborted) {
+                    if (strcmp(ifname, "") != 0)
+                        ifptr = ifname;
+                    else
+                        ifptr = NULL;
+
+                    ipmon(options, &ofilter, 0, ifptr);
+                }
+                break;
+            case 2:
+                ifstats(options, &ofilter, 0);
+                break;
+            case 3:
+                selectiface(ifname, WITHOUTALL, &aborted);
+                if (!aborted)
+                    detstats(ifname, options, 0, &ofilter);
+                break;
+            case 4:
+                break_row = 1;
+                init_break_menu(&break_menu);
+                tx_showmenu(&break_menu);
+                tx_operatemenu(&break_menu, &break_row, &break_aborted);
+
+                switch (break_row) {
+                case 1:
+                    selectiface(ifname, WITHOUTALL, &aborted);
+                    if (!aborted)
+                        packet_size_breakdown(options, ifname, 0,
+                                              &ofilter);
+                    break;
+                case 2:
+                    selectiface(ifname, WITHOUTALL, &aborted);
+                    if (!aborted)
+                        servmon(ifname, ports, options, 0, &ofilter);
+                    break;
+                case 4:
+                    break;
+                }
+                tx_destroymenu(&break_menu);
+                break;
+            case 5:
+                selectiface(ifname, WITHALL, &aborted);
+                if (!aborted) {
+                    if (strcmp(ifname, "") != 0)
+                        ifptr = ifname;
+                    else
+                        ifptr = NULL;
+                    hostmon(options, 0, ifptr, &ofilter);
+                }
+                break;
+            case 7:
+                config_filters(&ofilter);
+                savefilters(&ofilter);
+                break;
+            case 9:
+                setoptions(options, &ports);
+                saveoptions(options);
+                break;
+            case 11:
+                endloop = 1;
+                break;
+            }
+        } while (!endloop);
+
+        tx_destroymenu(&menu);
+    } else {
+        switch (opt) {
+        case 'i':
+            if ((strcmp(optarg, ALLSPEC) == 0)
+                || (strcmp(optarg, "") == 0))
+                ifptr = NULL;
+            else
+                ifptr = optarg;
+
+            ipmon(options, &ofilter, facilitytime, ifptr);
+            break;
+        case 'g':
+            ifstats(options, &ofilter, facilitytime);
+            break;
+        case 'd':
+            detstats(optarg, options, facilitytime, &ofilter);
+            break;
+        case 's':
+            servmon(optarg, ports, options, facilitytime, &ofilter);
+            break;
+        case 'z':
+            packet_size_breakdown(options, optarg, facilitytime, &ofilter);
+            break;
+        case 'l':
+            if ((strcmp(optarg, ALLSPEC) == 0)
+                || (strcmp(optarg, "") == 0))
+                ifptr = NULL;
+            else
+                ifptr = optarg;
+
+            hostmon(options, facilitytime, ifptr, &ofilter);
+            break;
+        }
+    }
+
+    destroyporttab(ports);
+    erase();
+    update_panels();
+    doupdate();
+}
+
+
+/*
+ * Command-line help facility.
+ */
+
+void commandhelp()
+{
+    printf("\nSyntax:\n");
+    printf
+        ("    iptraf [ -f ] [ -u ] [ { -i iface | -g | -d iface | -s iface | -z iface |\n");
+    printf
+        ("           -l iface } [ -t timeout ] [ -B ] [ -L logfile ] [-I interval] ] \n\n");
+    printf
+        ("Issue the iptraf command with no parameters for menu-driven operation.\n");
+    printf("These options can also be supplied to the command:\n\n");
+    printf
+        ("-i iface    - start the IP traffic monitor (use \"-i all\" for all interfaces)\n");
+    printf("-g          - start the general interface statistics\n");
+    printf
+        ("-d iface    - start the detailed statistics facility on an interface\n");
+    printf
+        ("-s iface    - start the TCP and UDP monitor on an interface\n");
+    printf("-z iface    - shows the packet size counts on an interface\n");
+    printf
+        ("-l iface    - start the LAN station monitor (\"-l all\" for all LAN interfaces)\n");
+    printf
+        ("-B          - run in background (use only with one of the above parameters)\n");
+    printf
+        ("-t timeout  - when used with one of the above parameters, tells\n");
+    printf
+        ("              the facility to run only for the specified number of\n");
+    printf("              minutes (timeout)\n");
+    printf
+        ("-L logfile  - specifies an alternate log file for any direct invocation\n");
+    printf
+        ("              of a facility from the command line.  The log is placed in\n");
+    printf("              %s if path is not specified.\n", LOGDIR);
+    printf
+        ("-I interval - specifies the log interval for all facilities except the IP\n");
+    printf("              traffic monitor.  Value is in minutes.\n");
+    printf
+        ("-f          - clear all locks and counters.  Use with great caution.\n");
+    printf
+        ("              Normally used to recover from an abnormal termination.\n\n");
+    printf
+        ("-u          - allow use of unsupported interfaces as ethernet devices.\n");
+    printf("IPTraf %s Copyright (c) Gerard Paul Java 1997-2004\n",
+           VERSION);
+}
+
+int first_instance()
+{
+    int fd;
+
+    fd = open(IPTIDFILE, O_RDONLY);
+
+    if (fd < 0)
+        return !0;
+    else {
+        close(fd);
+        return 0;
+    }
+}
+
+void mark_first_instance()
+{
+    int fd;
+
+    fd = open(IPTIDFILE, O_CREAT | O_WRONLY | O_TRUNC, S_IRUSR | S_IWUSR);
+    if (fd < 0) {
+        fprintf(stderr, "\nWarning: unable to tag this process\r\n");
+        press_enter_to_continue();
+        return;
+    }
+    close(fd);
+}
+
+/*
+ * Main routine
+ */
+
+int main(int argc, char **argv)
+{
+    struct OPTIONS options;
+    int opt = 0;
+    int command = 0;
+    char keyparm[12];
+    int facilitytime = 0;
+    int current_log_interval;
+
+#ifndef ALLOWUSERS
+    if (getuid() != 0) {
+        fprintf(stderr, "\nIPTraf Version %s\n", VERSION);
+        fprintf(stderr, "Copyright (c) Gerard Paul Java 1997-2004l\n\n");
+        fprintf(stderr,
+                "This program can be run only by the system administrator\n\n");
+        exit(1);
+    }
+#endif
+
+    setlocale(LC_ALL, "");
+
+    strcpy(current_logfile, "");
+    strcpy(graphing_logfile, "");
+    strcpy(graphing_filter, "");
+
+    /*
+     * Parse command line
+     */
+
+    if (argc > 1) {
+        do {
+            opterr = 0;
+            opt = getopt(argc, argv, "i:gd:s:z:l:hfqt:BL:uI:G:F:");
+
+            if (opt == 'h') {
+                commandhelp();
+                exit(0);
+            } else if (opt == 'f') {
+                removetags();
+                remove_sockets();
+            } else if (opt == 't') {
+                facilitytime = atoi(optarg);
+                if (facilitytime == 0) {
+                    fprintf(stderr, "\nInvalid time value\n\n");
+                    exit(1);
+                }
+            } else if (opt == 'B') {
+                daemonized = 1;
+                setenv("TERM", "linux", 1);
+            } else if (opt == 'L') {
+                if (strchr(optarg, '/') != NULL)
+                    strncpy(current_logfile, optarg, 80);
+                else
+                    strncpy(current_logfile, get_path(T_LOGDIR, optarg),
+                            80);
+            } else if (opt == 'q') {
+                /* -q parameter now ignored, maintained for compatibility */
+            } else if (opt == 'u') {
+                accept_unsupported_interfaces = 1;
+            } else if (opt == 'I') {
+                current_log_interval = atoi(optarg);
+                if (current_log_interval == 0)
+                    fprintf(stderr, "Invalid log interval value\n");
+
+                exit(1);
+            } else if (opt == 'G') {
+                if (strchr(optarg, '/') != NULL)
+                    strncpy(graphing_logfile, optarg, 80);
+                else
+                    strncpy(graphing_logfile, get_path(T_LOGDIR, optarg),
+                            80);
+
+                daemonized = 1;
+            } else if (opt == 'F') {
+                strncpy(graphing_filter, optarg, 80);
+            } else if (opt == '?') {
+                fprintf(stderr,
+                        "\nInvalid option or missing parameter, use iptraf -h for help\n\n");
+                exit(1);
+            } else if (opt != -1) {
+                if (optarg != 0) {
+                    bzero(keyparm, 12);
+                    strncpy(keyparm, optarg, 11);
+                } else
+                    strcpy(keyparm, "");
+
+                command = opt;
+            }
+        } while ((opt != '?') && (opt != -1));
+    }
+    is_first_instance = first_instance();
+
+    if ((getenv("TERM") == NULL) && (!daemonized)) {
+        fprintf(stderr, "Your TERM variable is not set.\n");
+        fprintf(stderr, "Please set it to an appropriate value.\n");
+        exit(1);
+    }
+
+    if (graphing_logfile[0] != '\0' && graphing_filter[0] == '\0') {
+        fprintf(stderr, "Specify an IP filter name with -F\n");
+        exit(1);
+    }
+
+    loadoptions(&options);
+
+    /*
+     * If a facility is directly invoked from the command line, check for
+     * a daemonization request
+     */
+
+    if ((daemonized) && (command != 0)) {
+        switch (fork()) {
+        case 0:                /* child */
+            setsid();
+            freopen("/dev/null", "w", stdout);  /* redirect std output */
+            freopen("/dev/null", "r", stdin);   /* redirect std input */
+            freopen("/dev/null", "w", stderr);  /* redirect std error */
+            signal(SIGUSR2, (void *) term_usr2_handler);
+
+            if (graphing_logfile[0] != '\0')
+                options.logging = 0;    /* if raw logging is specified */
+            else                /* then standard logging is disabled */
+                options.logging = 1;
+            break;
+        case -1:               /* error */
+            fprintf(stderr,
+                    "\nFork error, IPTraf cannot run in background\n\n");
+            exit(1);
+        default:               /* parent */
+            exit(0);
+        }
+    }
+#ifdef SIMDAEMON
+    daemonized = 1;
+    freopen("/dev/null", "w", stdout);  /* redirect std output */
+    freopen("/dev/null", "r", stdin);
+    freopen("/dev/null", "w", stderr);
+#endif
+    
+    /* Check whether LOCKDIR exists (/var/run is on a tmpfs in Ubuntu) */
+    if(access(LOCKDIR,F_OK) != 0) {
+	if(mkdir(LOCKDIR, 0700) == -1) {
+	    fprintf(stderr, "Cannot create %s: %s", LOCKDIR, strerror(errno));
+	    exit(1);
+        }
+	if(chown(LOCKDIR, 0, 0) == -1) {
+	    fprintf(stderr, "Cannot change owner of %s: %s", LOCKDIR, strerror(errno));
+	    exit(1);
+	}
+    }
+
+    initscr();
+
+    if ((LINES < 24) || (COLS < 80)) {
+        endwin();
+        fprintf(stderr,
+                "\nThis program requires a screen size of at least 80 columns by 24 lines\n");
+        fprintf(stderr, "Please resize your window\n\n");
+        exit(1);
+    }
+
+    mark_first_instance();
+
+    signal(SIGTERM, (void *) term_signal_handler);
+    signal(SIGHUP, (void *) term_signal_handler);
+    signal(SIGSEGV, (void *) segvhandler);
+    signal(SIGTSTP, SIG_IGN);
+    signal(SIGINT, SIG_IGN);
+    signal(SIGUSR1, SIG_IGN);
+
+    start_color();
+    standardcolors(options.color);
+    noecho();
+    nonl();
+    cbreak();
+
+#ifndef DEBUG
+    curs_set(0);
+#endif
+
+    /*
+     * Set logfilename variable to NULL if -L was specified without an
+     * appropriate facility on the command line.
+     */
+
+    if (command == 0)
+        strcpy(current_logfile, "");
+
+    /*
+     * If by this time the logfile is still acceptable, obtain the
+     * logspan from the command line if so specified.
+     */
+
+    if (current_logfile[0] != '\0') {
+        options.logging = 1;
+        if (current_log_interval != 0) {
+            options.logspan = current_log_interval;
+        }
+    }
+
+    program_interface(&options, command, keyparm, facilitytime);
+
+    endwin();
+
+    if (is_first_instance)
+        unlink(IPTIDFILE);
+
+    return (0);
+}
only in patch2:
unchanged:
--- iptraf-3.0.0.orig/patches/series
+++ iptraf-3.0.0/patches/series
@@ -0,0 +1 @@
+fix-help-as-non-root.patch
only in patch2:
unchanged:
--- iptraf-3.0.0.orig/patches/fix-help-as-non-root.patch
+++ iptraf-3.0.0/patches/fix-help-as-non-root.patch
@@ -0,0 +1,58 @@
+Index: iptraf-3.0.0/src/iptraf.c
+===================================================================
+--- iptraf-3.0.0.orig/src/iptraf.c	2013-05-29 11:33:11.000000000 +0200
++++ iptraf-3.0.0/src/iptraf.c	2013-05-31 10:18:56.281437921 +0200
+@@ -479,6 +479,19 @@ void mark_first_instance()
+     close(fd);
+ }
+ 
++void check_root()
++{
++#ifndef ALLOWUSERS
++    if (getuid() != 0) {
++        fprintf(stderr, "\nIPTraf Version %s\n", VERSION);
++        fprintf(stderr, "Copyright (c) Gerard Paul Java 1997-2004l\n\n");
++        fprintf(stderr,
++                "This program can be run only by the system administrator\n\n");
++        exit(1);
++    }
++#endif
++}
++
+ /*
+  * Main routine
+  */
+@@ -492,15 +505,6 @@ int main(int argc, char **argv)
+     int facilitytime = 0;
+     int current_log_interval;
+ 
+-#ifndef ALLOWUSERS
+-    if (getuid() != 0) {
+-        fprintf(stderr, "\nIPTraf Version %s\n", VERSION);
+-        fprintf(stderr, "Copyright (c) Gerard Paul Java 1997-2004l\n\n");
+-        fprintf(stderr,
+-                "This program can be run only by the system administrator\n\n");
+-        exit(1);
+-    }
+-#endif
+ 
+     setlocale(LC_ALL, "");
+ 
+@@ -521,7 +525,8 @@ int main(int argc, char **argv)
+                 commandhelp();
+                 exit(0);
+             } else if (opt == 'f') {
+-                removetags();
++		check_root();
++		removetags();
+                 remove_sockets();
+             } else if (opt == 't') {
+                 facilitytime = atoi(optarg);
+@@ -573,6 +578,7 @@ int main(int argc, char **argv)
+             }
+         } while ((opt != '?') && (opt != -1));
+     }
++    check_root();
+     is_first_instance = first_instance();
+ 
+     if ((getenv("TERM") == NULL) && (!daemonized)) {

--- End Message ---
--- Begin Message ---
Version: 3.0.0-8.1+rm

Dear submitter,

as the package iptraf has just been removed from the Debian archive
unstable we hereby close the associated bug reports.  We are sorry
that we couldn't deal with your issue properly.

For details on the removal, please see https://bugs.debian.org/842355

The version of this package that was in Debian prior to this removal
can still be found using http://snapshot.debian.org/.

This message was generated automatically; if you believe that there is
a problem with it please contact the archive administrators by mailing
[email protected].

Debian distribution maintenance software
pp.
Scott Kitterman (the ftpmaster behind the curtain)

--- End Message ---

Reply via email to