mschachter    01/07/02 13:15:35

  Modified:    src/share/org/apache/struts/upload
                        BufferedMultipartInputStream.java
                        MultipartIterator.java
  Log:
   - fix for file corruption problem with uploads (Main Branch)
  
  Submitted By: Mason Blackwood
  
  Revision  Changes    Path
  1.4       +5 -1      
jakarta-struts/src/share/org/apache/struts/upload/BufferedMultipartInputStream.java
  
  Index: BufferedMultipartInputStream.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/upload/BufferedMultipartInputStream.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- BufferedMultipartInputStream.java 2001/04/18 14:21:18     1.3
  +++ BufferedMultipartInputStream.java 2001/07/02 20:15:33     1.4
  @@ -204,7 +204,11 @@
               b[offset] = (byte) read;
               count++;
               offset++;
  -            read = read();
  +            //make sure that we don't ignore the last character if a
  +            //newline isn't encountered
  +            if (count < length) {
  +                read = read();
  +            }
           }
           return count;
       }
  
  
  
  1.15      +11 -6     
jakarta-struts/src/share/org/apache/struts/upload/MultipartIterator.java
  
  Index: MultipartIterator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/upload/MultipartIterator.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- MultipartIterator.java    2001/06/14 01:12:14     1.14
  +++ MultipartIterator.java    2001/07/02 20:15:34     1.15
  @@ -493,19 +493,25 @@
   
                           if (cutCarriage) {
                               fos.write('\r');
  +                            cutCarriage = false;
                           }
                           if (cutNewline) {
                               fos.write('\n');
  +                            cutNewline = false;
                           }
  -                        cutCarriage = false;
                           if (bytesRead > 0) {
                               if (lineBuffer[bytesRead-1] == '\r') {
  -                                bytesRead--;
  +                                //bytesRead--;
                                   cutCarriage = true;
  +                                fos.write(lineBuffer, 0, bytesRead-1);              
                  
                               }
  +                            else {
  +                                fos.write(lineBuffer, 0, bytesRead);
  +                            }                               
                           }
  -                        cutNewline = true;
  -                        fos.write(lineBuffer, 0, bytesRead);
  +                        if (bytesRead < MAX_LINE_SIZE) {
  +                            cutNewline = true;
  +                        }
                           bytesRead = inputStream.readLine(lineBuffer, 0, 
MAX_LINE_SIZE);
               }
           }
  @@ -513,8 +519,7 @@
               fos.close();
               tempFile.delete();
               throw ioe;
  -        }
  -        
  +        }        
           fos.flush(); 
           fos.close();
           return tempFile;
  
  
  

Reply via email to