]> git.llucax.com Git - software/mutt-debian.git/blob - debian/patches/debian-specific/Md.etc_mailname_gethostbyname.diff
Prepare and upload 1.5.11+cvs20060403-2 to fix CVE-2006-3242.
[software/mutt-debian.git] / debian / patches / debian-specific / Md.etc_mailname_gethostbyname.diff
1 --- mutt-1.5.11.orig/init.c
2 +++ mutt-1.5.11/init.c
3 @@ -46,6 +46,7 @@
4  #include <unistd.h>
5  #include <string.h>
6  #include <sys/utsname.h>
7 +#include <netdb.h>
8  #include <errno.h>
9  #include <sys/wait.h>
10  
11 @@ -2761,6 +2762,31 @@
12    return 0;
13  }
14  
15 +int getmailname(char *s, size_t l)
16 +{
17 +    FILE *f;
18 +    char tmp[512];
19 +    char *p = tmp;
20 +
21 +    if ((f = fopen ("/etc/mailname", "r")) == NULL)
22 +       return (-1);
23 +
24 +    if (fgets (tmp, 510, f) != NULL) {
25 +      while (*p && !ISSPACE(*p) && l > 0) {
26 +       *s++ = *p++;
27 +       l--;
28 +      }
29 +      if (*(s-1) == '.')
30 +       s--;
31 +      *s = 0;
32 +
33 +      fclose (f);
34 +      return 0;
35 +    }
36 +    fclose (f);
37 +    return (-1);
38 +}
39 +
40  void mutt_init (int skip_sys_rc, LIST *commands)
41  {
42    struct passwd *pw;
43 @@ -2832,10 +2858,25 @@
44      Hostname = mutt_substrdup (utsname.nodename, p);
45      p++;
46      strfcpy (buffer, p, sizeof (buffer)); /* save the domain for below */
47 +    Fqdn = safe_strdup (utsname.nodename);
48    }
49    else
50      Hostname = safe_strdup (utsname.nodename);
51  
52 +  /* if /etc/mailname exists use it and ignore everything else */
53 +  if (getmailname(buffer, sizeof (buffer)) != -1)
54 +      Fqdn = safe_strdup(buffer);
55 +
56 +  /* try gethostbyname(3) if /etc/mailname does not exists */
57 +  if (!Fqdn) {
58 +    struct hostent *hp;
59 +
60 +    if ((hp = gethostbyname(Hostname)))
61 +       Fqdn = safe_strdup(hp->h_name);
62 +  }
63 +
64 +  if (Fqdn) {
65 +  } else
66  #ifndef DOMAIN
67  #define DOMAIN buffer
68    if (!p && getdnsdomainname (buffer, sizeof (buffer)) == -1)