On Friday, March 31, 2006 09:49:24 AM -0500 Jim Rees <[EMAIL PROTECTED]> wrote:

     code =
        sscanf(adate, "%d / %d / %d %d : %d : %d%1s", &month, &day2, &year,
@@ -528,13 +529,28 @@
                   &hour, &min, &c[0]);

I still think we should do _something_ about the mismatched format string and arguments here. Either nuke the last %d, or add another input argument for seconds, but as it stands now, this code is wrong and may crash.



+    /* New ISO 8601 (subset) format */
+
+    if (code < 0) {
+       hour = min = sec = 0;
+       code =
+           sscanf(adate, "%d-%d-%d %d:%d:%d%1s", &year, &month, &day2,
+                  &hour, &min, &sec, c);

Your last patch had whitespace in the sscanf format string, like the one above. Did you intend to remove that?

+       if (code != 3 && code != 5 && code != 6)
+           code = -1;

OK; now it has the same level of validation as the old code. We might want to consider making it more strict at some point; see my previous message. But I don't consider the lack of additional strictness a showstopper.


+    afs_int32 code;
+    long l;
+    char c[2];
+
+    if (sscanf(adate, "%ld%1s", &l, c) == 1)
+       *aint32 = l;
+    else {
+       /* parse the date into a ktime_date structure */
+       code = ktime_ParseDate(adate, &tdate);
+       if (code)
+           return code;                /* failed to parse */
+       code = ktime_InterpretDate(&tdate); /* interpret as seconds since 1970
*/ +    *aint32 = code;         /* return it */
+    }

Good...


-- Jeff
_______________________________________________
OpenAFS-devel mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-devel

Reply via email to