tlibplumb, Mail: fix crash on nil plumb fids - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 7b5db1c35abac2240fffbee2027c3e99b760863c
 (DIR) parent 0cadb4301d18724e7513d7489cb5bebd262c82f1
 (HTM) Author: Mathieu Lonjaret <lejatorn@gmail.com>
       Date:   Sat, 12 Sep 2009 15:25:51 -0400
       
       libplumb, Mail: fix crash on nil plumb fids
       
       http://codereview.appspot.com/116083
       
       Diffstat:
         M src/cmd/acme/mail/mail.c            |       9 ++++++---
         M src/libplumb/fid.c                  |       4 ++++
       
       2 files changed, 10 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/acme/mail/mail.c b/src/cmd/acme/mail/mail.c
       t@@ -84,9 +84,12 @@ threadmain(int argc, char *argv[])
                quotefmtinstall();
        
                /* open these early so we won't miss notification of new mail messages while we read mbox */
       -        plumbsendfd = plumbopenfid("send", OWRITE|OCEXEC);
       -        plumbseemailfd = plumbopenfid("seemail", OREAD|OCEXEC);
       -        plumbshowmailfd = plumbopenfid("showmail", OREAD|OCEXEC);
       +        if((plumbsendfd = plumbopenfid("send", OWRITE|OCEXEC)) == nil)
       +                fprint(2, "warning: open plumb/send: %r\n");
       +        if((plumbseemailfd = plumbopenfid("seemail", OREAD|OCEXEC)) == nil)
       +                fprint(2, "warning: open plumb/seemail: %r\n");
       +        if((plumbshowmailfd = plumbopenfid("showmail", OREAD|OCEXEC)) == nil)
       +                fprint(2, "warning: open plumb/showmail: %r\n");
        
                shortmenu = 0;
                srvname = "mail";
 (DIR) diff --git a/src/libplumb/fid.c b/src/libplumb/fid.c
       t@@ -138,6 +138,10 @@ plumbrecvfid(CFid *fid)
                Plumbmsg *m;
                int n, more;
        
       +        if(fid == nil){
       +                werrstr("invalid fid");
       +                return nil;
       +        }
                buf = malloc(8192);
                if(buf == nil)
                        return nil;