~ubuntu-branches/ubuntu/vivid/sslh/vivid-proposed

« back to all changes in this revision

Viewing changes to sslh-main.c

  • Committer: Package Import Robot
  • Author(s): Guillaume Delacour
  • Date: 2014-08-07 00:06:06 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20140807000606-y1tg7j8i5t7d4drr
Tags: 1.16-1
* New upstream release: fix some startup problem when interfaces are not
  ready at boot time (IP_FREEBIND support when available) and can use libcap
  for transparent mode
* Enable libcap and libwrap support at build time
* Enable dpkg-buildflags: Drop hardening-wrapper Build-Depends and use
  DEB_BUILD_HARDENING instead of DEB_BUILD_MAINT_OPTIONS
* Remove old .gitignore as upstream has one too
* debian/sslh.tmpfile: Create /run/sslh for systemd as root because sslh
  write its pid before dropping privileges (Closes: #740560)
* debian/patches/disable_ip_freebind_test.diff: Remove "Can't bind address"
  upstream test because IP_FREEBIND is now enabled upstream
* debian/docs: upstream README is now README.md
* debian/rules:
  + use DESTDIR in addition of PREFIX as upstream change Makefile
* Refresh debian/patches/disable_valgrind_launch.diff due to upstream
  changes
* Stop service in case of purge (to be able to remove the user too)
* Use DEB_BUILD_OPTIONS to speed the build
* debian/patches/fixed_version.diff: Fix the version of binaries based on
  debian/changelog (instead of relying on git)
* Update Description as sslh is not only a ssl/ssh multiplexer but a
  protocol multiplexer

Show diffs side-by-side

added added

removed removed

Lines of Context:
79
79
{
80
80
    struct proto *p;
81
81
    int i;
 
82
    int res;
82
83
    char *prots = "";
83
84
 
84
85
    p = get_builtins();
85
 
    for (i = 0; i < get_num_builtins(); i++)
86
 
        asprintf(&prots, "%s\t[--%s <addr>]\n", prots, p[i].description);
 
86
    for (i = 0; i < get_num_builtins(); i++) {
 
87
        res = asprintf(&prots, "%s\t[--%s <addr>]\n", prots, p[i].description);
 
88
        CHECK_RES_DIE(res, "asprintf");
 
89
    }
87
90
 
88
91
    fprintf(stderr, USAGE_STRING, prots);
89
92
}
90
93
 
 
94
static void printcaps(void) {
 
95
#ifdef LIBCAP
 
96
    cap_t caps;
 
97
    char* desc;
 
98
    ssize_t len;
 
99
 
 
100
    caps = cap_get_proc();
 
101
 
 
102
    desc = cap_to_text(caps, &len);
 
103
 
 
104
    fprintf(stderr, "capabilities: %s\n", desc);
 
105
 
 
106
    cap_free(caps);
 
107
    cap_free(desc);
 
108
#endif
 
109
}
 
110
 
91
111
static void printsettings(void)
92
112
{
93
113
    char buf[NI_MAXHOST];
254
274
static int config_parse(char *filename, struct addrinfo **listen, struct proto **prots)
255
275
{
256
276
    config_t config;
257
 
    long int timeout;
 
277
    int timeout;
258
278
    const char* str;
259
279
 
260
280
    config_init(&config);
270
290
    config_lookup_bool(&config, "inetd", &inetd);
271
291
    config_lookup_bool(&config, "foreground", &foreground);
272
292
    config_lookup_bool(&config, "numeric", &numeric);
 
293
    config_lookup_bool(&config, "transparent", &transparent);
273
294
 
274
 
    if (config_lookup_int(&config, "timeout", &timeout) == CONFIG_TRUE) {
 
295
    if (config_lookup_int(&config, "timeout", (int *)&timeout) == CONFIG_TRUE) {
275
296
        probing_timeout = timeout;
276
297
    }
277
298
 
446
467
 
447
468
    set_protocol_list(prots);
448
469
 
449
 
    if (!addr_listen) {
 
470
    if (!addr_listen && !inetd) {
450
471
        fprintf(stderr, "No listening address specified; use at least one -p option\n");
451
472
        exit(1);
452
473
    }
504
525
   if (user_name)
505
526
       drop_privileges(user_name);
506
527
 
 
528
 
507
529
   /* Open syslog connection */
508
530
   setup_syslog(argv[0]);
509
531
 
 
532
   if (verbose)
 
533
       printcaps();
 
534
 
510
535
   main_loop(listen_sockets, num_addr_listen);
511
536
 
512
537
   return 0;