]> arthur.barton.de Git - netatalk.git/commitdiff
markline: return an error if the buffer is too big and there's no end of line before_acls
authordidg <didg>
Mon, 2 Feb 2009 10:31:32 +0000 (10:31 +0000)
committerdidg <didg>
Mon, 2 Feb 2009 10:31:32 +0000 (10:31 +0000)
etc/papd/file.c
etc/papd/headers.c
etc/papd/magics.c
etc/papd/queries.c

index 62e3c033eb35515fa2f8a010dcc18e535efdfd51..aa9daea6cb2eca15ccd6ae2138e3f2dcb1d9b72d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: file.c,v 1.9 2002-01-04 04:45:47 sibaz Exp $
+ * $Id: file.c,v 1.10 2009-02-02 10:31:32 didg Exp $
  *
  * Copyright (c) 1990,1994 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -17,6 +17,8 @@
 
 #include "file.h"
 
+/* 
+*/
 int markline( pf, start, linelength, crlflength )
     char               **start;
     int                        *linelength, *crlflength;
@@ -53,6 +55,12 @@ int markline( pf, start, linelength, crlflength )
     (p[*crlflength]=='\r' || p[*crlflength]=='\n')) {
        (*crlflength)++;
     }
+    
+    if (!*crlflength) {
+        /* line is way too long, something fishy is going on, give up */
+        LOG(log_error, logtype_papd, "markline: no crlf in comment, give up" );
+        return( -2 );
+    }
 
     /* success, return 1 */
     return( 1 );
index 266036270f21926c0b85c017faffc9d2ccf12e76..ef671ad90640e6cd45b920e1b292489a21f64f4d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: headers.c,v 1.11 2008-08-14 19:57:52 didg Exp $
+ * $Id: headers.c,v 1.12 2009-02-02 10:31:32 didg Exp $
  *
  * Copyright (c) 1990,1994 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -92,6 +92,9 @@ int ch_for( in, out )
 
     case -1 :
         return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
     cmt = get_text(start, linelength);
@@ -121,6 +124,9 @@ int ch_title( in, out )
 
     case -1 :
        return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
 #ifdef DEBUG
@@ -165,6 +171,9 @@ int ch_creator( in, out )
 
     case -1 :
        return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
     cmt = get_text(start, linelength);
@@ -200,6 +209,9 @@ int ch_endcomm( in, out )
 
     case -1 :
        return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
     in->pf_state |= PF_TRANSLATE;
@@ -226,6 +238,9 @@ int ch_starttranslate(in,out)
 
     case -1 :
         return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
     in->pf_state |= PF_TRANSLATE;
@@ -251,6 +266,9 @@ int ch_endtranslate(in,out)
 
     case -1 :
         return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
     lp_write( in, start, linelength + crlflength );
@@ -276,6 +294,9 @@ int ch_translateone(in,out)
 
     case -1 :
         return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
     in->pf_state |= PF_TRANSLATE;
index 6dc1d5ac1e1362ffa6d49f614d990b4a065ff5e8..bc0b70b58e53dd074d1c39b1aa4faba1d3925218 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: magics.c,v 1.12 2005-04-28 20:49:49 bfernhomberg Exp $
+ * $Id: magics.c,v 1.13 2009-02-02 10:31:32 didg Exp $
  *
  * Copyright (c) 1990,1994 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
 
 static int state=0;
 
+static void parser_error(outfile)
+    struct papfile     *outfile;
+{
+                spoolerror( outfile, "Comments error, Ignoring job." );
+               outfile->pf_state |= PF_EOF;
+               lp_close();
+}
+
 int ps( infile, outfile, sat )
     struct papfile     *infile, *outfile;
     struct sockaddr_at *sat;
@@ -49,6 +57,10 @@ int ps( infile, outfile, sat )
            case CH_MORE :
                return( CH_MORE );
 
+           case CH_ERROR :
+               parser_error(outfile);
+               return( 0 );
+
            default :
                return( CH_ERROR );
            }
@@ -60,6 +72,10 @@ int ps( infile, outfile, sat )
                lp_close();
                return( 0 );
 
+           case -2:
+               parser_error(outfile);
+               return( 0 );
+
            case -1 :
                return( 0 );
            }
@@ -105,6 +121,9 @@ int cm_psquery( in, out, sat )
 
        case -1 :
            return( CH_MORE );
+
+        case -2 :
+            return( CH_ERROR );
        }
 
        if ( in->pf_state & PF_BOT ) {
@@ -138,6 +157,9 @@ int cm_psadobe( in, out, sat )
 
        case -1 :
            return( CH_MORE );
+
+        case -2 :
+            return( CH_ERROR );
        }
        if ( in->pf_state & PF_BOT ) {
            in->pf_state &= ~PF_BOT;
@@ -177,6 +199,9 @@ int cm_psswitch( in, out, sat )
 
     case -1 :
        return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
     stop = start + linelength;
index 4c41b6344e2d47d01f188c7bfd778cc447d12efb..41d1c4235f24505787a77683896045fdc00e627e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: queries.c,v 1.18 2005-04-28 20:49:49 bfernhomberg Exp $
+ * $Id: queries.c,v 1.19 2009-02-02 10:31:32 didg Exp $
  *
  * Copyright (c) 1990,1994 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -71,6 +71,9 @@ int cq_default( in, out )
 
        case -1 :
            return( CH_MORE );
+
+        case -2 :
+            return( CH_ERROR );
        }
 
        stop = start+linelength;
@@ -130,6 +133,9 @@ int cq_k4login( in, out )
 
     case -1 :
        return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
     p = start + strlen( comment->c_begin );
@@ -180,6 +186,9 @@ int cq_uameth( in, out )
 
        case -1 :
            return( CH_MORE );
+
+        case -2 :
+            return( CH_ERROR );
        }
 
        if ( comgetflags() == 0 ) {     /* start */
@@ -326,6 +335,9 @@ int cq_query( in, out )
 
        case -1 :
            return( CH_MORE );
+
+        case -2 :
+            return( CH_ERROR );
        }
 
        stop = start+linelength;
@@ -428,6 +440,9 @@ int cq_font( in, out )
 
        case -1 :
            return( CH_MORE );
+
+        case -2 :
+            return( CH_ERROR );
        }
 
        stop = start + linelength;
@@ -486,6 +501,9 @@ int cq_feature( in, out )
 
        case -1 :
            return( CH_MORE );
+
+        case -2 :
+            return( CH_ERROR );
        }
 
        stop = start + linelength;
@@ -544,6 +562,9 @@ int cq_printer( in, out )
 
        case -1 :
            return( CH_MORE );
+
+        case -2 :
+            return( CH_ERROR );
        }
 
        if ( comgetflags() == 0 ) {
@@ -620,6 +641,9 @@ int cq_rmjob( in, out )
 
     case -1 :
        return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
     stop = start + linelength;
@@ -660,6 +684,9 @@ int cq_listq( in, out )
 
     case -1 :
        return( CH_MORE );
+
+    case -2 :
+        return( CH_ERROR );
     }
 
     if ( lp_queue( out )) {
@@ -701,6 +728,9 @@ int cq_rbilogin( in, out )
 
         case -1 :
             return( CH_MORE );
+
+        case -2 :
+            return( CH_ERROR );
         }
 
        stop = start + linelength;