I will give it a run and let you know. Brad
Brad Nicholes Senior Software Engineer Novell, Inc., a leading provider of Net business solutions http://www.novell.com >>> Cliff Woolley <[EMAIL PROTECTED]> Friday, April 05, 2002 11:44:30 AM >>> On Fri, 5 Apr 2002, Brad Nicholes wrote: > I'm still seeing a problem with apr_tokenize_to_argv() that causes the > parser to run off the end string. I know this causes a fault on > NetWare, but since I don't understand this code completely and the > comments about allowing for a NULL argument are confusing, I was hoping > someone would confirm or deny the problem. Confirmed (by inspection). You're quite right... we've just been getting lucky. This appears semantically correct to me, though I haven't tested it: Index: apr_cpystrn.c =================================================================== RCS file: /home/cvs/apr/strings/apr_cpystrn.c,v retrieving revision 1.10 diff -u -d -r1.10 apr_cpystrn.c --- apr_cpystrn.c 13 Mar 2002 20:39:26 -0000 1.10 +++ apr_cpystrn.c 5 Apr 2002 18:41:19 -0000 @@ -168,10 +168,9 @@ * Must account for the trailing NULL arg. */ numargs = 1; - while (*ct != '\0') { + for (; *ct != '\0'; ct++) { CHECK_QUOTATION(ct, isquoted); DETERMINE_NEXTSTRING(ct, isquoted); - ct++; numargs++; SKIP_WHITESPACE(ct); } The only semantic difference is that if DETERMINE_NEXTSTRING lands on a " then the ct++ from before would skip over it and SKIP_WHITESPACE would proceed to skip whitespace _inside_ the quote. Then back to the top of the loop, and CHECK_QUOTATION would never have seen the " to set isquoted to 1. But as far as I can tell, that's also a bug, and using the for loop fixes that as well. Brad, can you test this for me (since I don't have a good test case)? Thanks, Cliff -------------------------------------------------------------- Cliff Woolley [EMAIL PROTECTED] Charlottesville, VA
