proftpd/proftpd.patch

Wed, 08 Feb 2012 20:07:00 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 08 Feb 2012 20:07:00 +0200
changeset 588
300d43423c2e
permissions
-rw-r--r--

Update version, adapt patch, correct PID writing, correct build on newer
FreeBSD releases, and most importantly introduce new patch to try to
avoid segfault caused by multiple network interfaces with the same (or
no) address. This is common when configuring bridges and tunnels.

     1 Index: mod_otp/mod_otp.c
     2 --- mod_otp/mod_otp.c.orig	2006-12-06 17:13:06 +0100
     3 +++ mod_otp/mod_otp.c	2009-01-27 08:33:56 +0100
     4 @@ -79,7 +79,7 @@
     5    CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
     7    bool = get_boolean(cmd, 1);
     8 -  if ((bool == -1)
     9 +  if (bool == -1)
    10      CONF_ERROR(cmd, "expecting Boolean parameter");
    12    c = add_config_param(cmd->argv[0], 1, NULL);
    13 @@ -128,7 +128,7 @@
    14          ": error generating challenge for user '%s': %s", cmd->argv[1], str);
    16    } else
    17 -    pr_add_response_dup(R_DUP, "Challenge: [ %s ]", challenge);
    18 +    pr_response_add(R_DUP, "Challenge: [ %s ]", challenge);
    20    return DECLINED(cmd);
    21  }
    22 Index: mod_sql_odbc/mod_sql_odbc.c
    23 --- mod_sql_odbc/mod_sql_odbc.c.orig	2007-04-17 17:05:18 +0200
    24 +++ mod_sql_odbc/mod_sql_odbc.c	2009-01-27 19:16:56 +0100
    25 @@ -890,8 +890,8 @@
    27    /* Set up our timer, if necessary. */
    28    if (entry->ttl > 0) {
    29 -    entry->timer = add_timer(entry->ttl, -1, &sql_odbc_module,
    30 -      sqlodbc_timer_cb);
    31 +    entry->timer = pr_timer_add(entry->ttl, -1, &sql_odbc_module,
    32 +      sqlodbc_timer_cb, "mod_sql_odbc TTL");
    34      sql_log(DEBUG_INFO, "'%s' connection: %d second timer started",
    35        entry->name, entry->ttl);
    36 Index: mod_sql_sqlite/mod_sql_sqlite.c
    37 --- mod_sql_sqlite/mod_sql_sqlite.c.orig	2007-05-21 17:37:11 +0200
    38 +++ mod_sql_sqlite/mod_sql_sqlite.c	2009-01-27 19:15:57 +0100
    39 @@ -236,8 +236,8 @@
    41    /* Set up our timer, if necessary. */
    42    if (entry->ttl > 0) {
    43 -    entry->timer = add_timer(entry->ttl, -1, &sql_sqlite_module,
    44 -      sql_sqlite_timer_cb);
    45 +    entry->timer = pr_timer_add(entry->ttl, -1, &sql_sqlite_module,
    46 +      sql_sqlite_timer_cb, "mod_sql_sqlite TTL");
    48      sql_log(DEBUG_INFO, "'%s' connection: %d second timer started",
    49        entry->name, entry->ttl);
    50 Index: mod_time/mod_time.c
    51 --- mod_time/mod_time.c.orig	2004-05-12 20:57:06 +0200
    52 +++ mod_time/mod_time.c	2009-01-27 08:33:56 +0100
    53 @@ -146,7 +146,7 @@
    54    /* If we don't have a password file, we create an empty array and punt.
    55     */
    56    if (!pw) {
    57 -    if (!name || !(pw = (struct passwd *) auth_getpwnam(p, name))) {
    58 +    if (!name || !(pw = (struct passwd *) pr_auth_getpwnam(p, name))) {
    59        *gids = make_array(p, 2, sizeof(gid_t));
    60        *groups = make_array(p, 2, sizeof(char *));
    61        return;
    62 @@ -172,7 +172,7 @@
    63    /* Now populate the names of the groups.
    64     */
    65    for (i = 0; i < total; i++) {
    66 -    if ((gr = (struct group *) auth_getgrgid(p, ((gid_t *) xgids->elts)[i])))
    67 +    if ((gr = (struct group *) pr_auth_getgrgid(p, ((gid_t *) xgids->elts)[i])))
    68        *((char **) push_array(xgroups)) = pstrdup(p, gr->gr_name);
    69    }
    71 @@ -188,7 +188,7 @@
    72    /* Nothing there...punt.
    73     */
    74    if (!pw) {
    75 -    if (!name || !(pw = (struct passwd *) auth_getpwnam(p, name))) {
    76 +    if (!name || !(pw = (struct passwd *) pr_auth_getpwnam(p, name))) {
    77        *gids = xgids;
    78        *groups = xgroups;
    79        return;
    80 @@ -197,16 +197,16 @@
    82    /* Populate the first group name.
    83     */
    84 -  if ((gr = auth_getgrgid(p, pw->pw_gid)) != NULL)
    85 +  if ((gr = pr_auth_getgrgid(p, pw->pw_gid)) != NULL)
    86      *((char **) push_array(xgroups)) = pstrdup(p, gr->gr_name);
    88 -  auth_setgrent(p);
    89 +  pr_auth_setgrent(p);
    91    /* This is where things get slow, expensive, and ugly.
    92     * Loop through everything, checking to make sure we haven't already added
    93     * it.  This is why we have getgroups() and company.
    94     */
    95 -  while ((gr = auth_getgrent(p)) != NULL && gr->gr_mem)
    96 +  while ((gr = pr_auth_getgrent(p)) != NULL && gr->gr_mem)
    97      for (gr_mem = gr->gr_mem; *gr_mem; gr_mem++) {
    98        if (strcmp(*gr_mem, pw->pw_name) == 0) {
    99          *((int *) push_array(xgids)) = (int) gr->gr_gid;
   100 @@ -634,7 +634,7 @@
   101    if (!session.user) {
   102      /* Populate the pw struct, check for a NULL return value. */
   104 -    if ((pw = auth_getpwnam(cmd->tmp_pool, user)) == NULL)
   105 +    if ((pw = pr_auth_getpwnam(cmd->tmp_pool, user)) == NULL)
   106        return NULL;
   108      time_user = pstrdup(session.pool, pw->pw_name);
   109 @@ -1603,7 +1603,7 @@
   110         "%R", (session.c && session.c->remote_name ?  session.c->remote_name : "(unknown)"),
   111         "%L", main_server->ServerFQDN,
   112         "%U", user,
   113 -       "%u", session.ident_user,
   114 +       "%u", session.user,
   115         "%M", mesg_max,
   116         "%N", mesg_cur,
   117         "%E", main_server->ServerAdmin,

mercurial