]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 228339 via svnmerge from
authorDavid Vossel <dvossel@digium.com>
Fri, 6 Nov 2009 15:44:04 +0000 (15:44 +0000)
committerDavid Vossel <dvossel@digium.com>
Fri, 6 Nov 2009 15:44:04 +0000 (15:44 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r228339 | dvossel | 2009-11-06 09:42:46 -0600 (Fri, 06 Nov 2009) | 12 lines

  Merged revisions 228338 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r228338 | dvossel | 2009-11-06 09:41:41 -0600 (Fri, 06 Nov 2009) | 5 lines

    fixes crash in astfd.c

    (closes issue #15981)
    Reported by: slavon
  ........
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@228341 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/astfd.c

index 6a9f70e4255f822b87a2144e11d3c54caa941aa4..90ded390f726282e78b67e3888d3ccc1d3466d39 100644 (file)
@@ -130,15 +130,16 @@ int __ast_fdleak_pipe(int *fds, const char *file, int line, const char *func)
 #undef socket
 int __ast_fdleak_socket(int domain, int type, int protocol, const char *file, int line, const char *func)
 {
-       char sdomain[20], stype[20], *sproto;
+       char sdomain[20], stype[20], *sproto = NULL;
        struct protoent *pe;
        int res = socket(domain, type, protocol);
        if (res < 0 || res > 1023) {
                return res;
        }
 
-       pe = getprotobynumber(protocol);
-       sproto = pe->p_name;
+       if ((pe = getprotobynumber(protocol))) {
+               sproto = pe->p_name;
+       }
 
        if (domain == PF_UNIX) {
                ast_copy_string(sdomain, "PF_UNIX", sizeof(sdomain));
@@ -162,7 +163,11 @@ int __ast_fdleak_socket(int domain, int type, int protocol, const char *file, in
                snprintf(stype, sizeof(stype), "%d", type);
        }
 
-       STORE_COMMON(res, "socket", "%s,%s,\"%s\"", sdomain, stype, sproto);
+       if (sproto) {
+               STORE_COMMON(res, "socket", "%s,%s,\"%s\"", sdomain, stype, sproto);
+       } else {
+               STORE_COMMON(res, "socket", "%s,%s,\"%d\"", sdomain, stype, protocol);
+       }
        return res;
 }