Artifact
4be73b381720dd41122992c32af5ae34414ed3e2:
Attachment "manifest_parse_fix.diff" to
ticket [be56c89def]
added by
anonymous
2010-10-16 10:49:32.
0000: 49 6e 64 65 78 3a 20 73 72 63 2f 6d 61 6e 69 66 Index: src/manif
0010: 65 73 74 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d est.c.==========
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 73 72 =========.--- sr
0060: 63 2f 6d 61 6e 69 66 65 73 74 2e 63 0a 2b 2b 2b c/manifest.c.+++
0070: 20 73 72 63 2f 6d 61 6e 69 66 65 73 74 2e 63 0a src/manifest.c.
0080: 40 40 20 2d 31 39 39 2c 31 31 20 2b 31 39 39 2c @@ -199,11 +199,
0090: 31 31 20 40 40 0a 20 2a 2f 0a 20 69 6e 74 20 6d 11 @@. */. int m
00a0: 61 6e 69 66 65 73 74 5f 70 61 72 73 65 28 4d 61 anifest_parse(Ma
00b0: 6e 69 66 65 73 74 20 2a 70 2c 20 42 6c 6f 62 20 nifest *p, Blob
00c0: 2a 70 43 6f 6e 74 65 6e 74 29 7b 0a 20 20 20 69 *pContent){. i
00d0: 6e 74 20 73 65 65 6e 48 65 61 64 65 72 20 3d 20 nt seenHeader =
00e0: 30 3b 0a 20 20 20 69 6e 74 20 73 65 65 6e 5a 20 0;. int seenZ
00f0: 3d 20 30 3b 0a 20 20 20 69 6e 74 20 69 2c 20 6c = 0;. int i, l
0100: 69 6e 65 4e 6f 3d 30 3b 0a 2d 20 20 42 6c 6f 62 ineNo=0;.- Blob
0110: 20 6c 69 6e 65 2c 20 74 6f 6b 65 6e 2c 20 61 31 line, token, a1
0120: 2c 20 61 32 2c 20 61 33 2c 20 61 34 3b 0a 2b 20 , a2, a3, a4;.+
0130: 20 42 6c 6f 62 20 69 6e 70 75 74 6c 69 6e 65 2c Blob inputline,
0140: 20 6c 69 6e 65 2c 20 74 6f 6b 65 6e 2c 20 61 31 line, token, a1
0150: 2c 20 61 32 2c 20 61 33 2c 20 61 34 3b 0a 20 20 , a2, a3, a4;.
0160: 20 63 68 61 72 20 63 50 72 65 76 54 79 70 65 20 char cPrevType
0170: 3d 20 30 3b 0a 20 0a 20 20 20 6d 65 6d 73 65 74 = 0;. . memset
0180: 28 70 2c 20 30 2c 20 73 69 7a 65 6f 66 28 2a 70 (p, 0, sizeof(*p
0190: 29 29 3b 0a 20 20 20 6d 65 6d 63 70 79 28 26 70 ));. memcpy(&p
01a0: 2d 3e 63 6f 6e 74 65 6e 74 2c 20 70 43 6f 6e 74 ->content, pCont
01b0: 65 6e 74 2c 20 73 69 7a 65 6f 66 28 70 2d 3e 63 ent, sizeof(p->c
01c0: 6f 6e 74 65 6e 74 29 29 3b 0a 20 20 20 62 6c 6f ontent));. blo
01d0: 62 5f 7a 65 72 6f 28 70 43 6f 6e 74 65 6e 74 29 b_zero(pContent)
01e0: 3b 0a 40 40 20 2d 32 31 31 2c 31 31 20 2b 32 31 ;.@@ -211,11 +21
01f0: 31 2c 31 32 20 40 40 0a 20 0a 20 20 20 62 6c 6f 1,12 @@. . blo
0200: 62 5f 7a 65 72 6f 28 26 61 31 29 3b 0a 20 20 20 b_zero(&a1);.
0210: 62 6c 6f 62 5f 7a 65 72 6f 28 26 61 32 29 3b 0a blob_zero(&a2);.
0220: 20 20 20 62 6c 6f 62 5f 7a 65 72 6f 28 26 61 33 blob_zero(&a3
0230: 29 3b 0a 20 20 20 6d 64 35 73 75 6d 5f 69 6e 69 );. md5sum_ini
0240: 74 28 29 3b 0a 2d 20 20 77 68 69 6c 65 28 20 62 t();.- while( b
0250: 6c 6f 62 5f 6c 69 6e 65 28 70 43 6f 6e 74 65 6e lob_line(pConten
0260: 74 2c 20 26 6c 69 6e 65 29 20 29 7b 0a 2b 20 20 t, &line) ){.+
0270: 77 68 69 6c 65 28 20 62 6c 6f 62 5f 6c 69 6e 65 while( blob_line
0280: 28 70 43 6f 6e 74 65 6e 74 2c 20 26 69 6e 70 75 (pContent, &inpu
0290: 74 6c 69 6e 65 29 20 29 7b 0a 2b 20 20 20 20 62 tline) ){.+ b
02a0: 6c 6f 62 5f 63 6f 70 79 28 26 6c 69 6e 65 2c 20 lob_copy(&line,
02b0: 26 69 6e 70 75 74 6c 69 6e 65 29 3b 0a 20 20 20 &inputline);.
02c0: 20 20 63 68 61 72 20 2a 7a 20 3d 20 62 6c 6f 62 char *z = blob
02d0: 5f 62 75 66 66 65 72 28 26 6c 69 6e 65 29 3b 0a _buffer(&line);.
02e0: 20 20 20 20 20 6c 69 6e 65 4e 6f 2b 2b 3b 0a 20 lineNo++;.
02f0: 20 20 20 20 69 66 28 20 7a 5b 30 5d 3d 3d 27 2d if( z[0]=='-
0300: 27 20 29 7b 0a 20 20 20 20 20 20 20 69 66 28 20 ' ){. if(
0310: 73 74 72 6e 63 6d 70 28 7a 2c 20 22 2d 2d 2d 2d strncmp(z, "----
0320: 2d 42 45 47 49 4e 20 50 47 50 20 22 2c 20 31 35 -BEGIN PGP ", 15
0330: 29 21 3d 30 20 29 7b 0a 20 20 20 20 20 20 20 20 )!=0 ){.
0340: 20 67 6f 74 6f 20 6d 61 6e 69 66 65 73 74 5f 73 goto manifest_s
0350: 79 6e 74 61 78 5f 65 72 72 6f 72 3b 0a 40 40 20 yntax_error;.@@
0360: 2d 37 34 36 2c 31 36 20 2b 37 34 37 2c 31 38 20 -746,16 +747,18
0370: 40 40 0a 20 20 20 20 20 69 66 28 20 70 2d 3e 7a @@. if( p->z
0380: 57 69 6b 69 54 69 74 6c 65 20 29 20 67 6f 74 6f WikiTitle ) goto
0390: 20 6d 61 6e 69 66 65 73 74 5f 73 79 6e 74 61 78 manifest_syntax
03a0: 5f 65 72 72 6f 72 3b 0a 20 20 20 20 20 69 66 28 _error;. if(
03b0: 20 70 2d 3e 7a 54 69 63 6b 65 74 55 75 69 64 20 p->zTicketUuid
03c0: 29 20 67 6f 74 6f 20 6d 61 6e 69 66 65 73 74 5f ) goto manifest_
03d0: 73 79 6e 74 61 78 5f 65 72 72 6f 72 3b 0a 20 20 syntax_error;.
03e0: 20 20 20 70 2d 3e 74 79 70 65 20 3d 20 43 46 54 p->type = CFT
03f0: 59 50 45 5f 4d 41 4e 49 46 45 53 54 3b 0a 20 20 YPE_MANIFEST;.
0400: 20 7d 0a 20 20 20 6d 64 35 73 75 6d 5f 69 6e 69 }. md5sum_ini
0410: 74 28 29 3b 0a 2b 20 20 62 6c 6f 62 5f 72 65 73 t();.+ blob_res
0420: 65 74 28 26 6c 69 6e 65 29 3b 0a 20 20 20 72 65 et(&line);. re
0430: 74 75 72 6e 20 31 3b 0a 20 0a 20 6d 61 6e 69 66 turn 1;. . manif
0440: 65 73 74 5f 73 79 6e 74 61 78 5f 65 72 72 6f 72 est_syntax_error
0450: 3a 0a 20 20 20 2f 2a 66 70 72 69 6e 74 66 28 73 :. /*fprintf(s
0460: 74 64 65 72 72 2c 20 22 4d 61 6e 69 66 65 73 74 tderr, "Manifest
0470: 20 65 72 72 6f 72 20 6f 6e 20 6c 69 6e 65 20 25 error on line %
0480: 69 5c 6e 22 2c 20 6c 69 6e 65 4e 6f 29 3b 66 66 i\n", lineNo);ff
0490: 6c 75 73 68 28 73 74 64 65 72 72 29 3b 2a 2f 0a lush(stderr);*/.
04a0: 20 20 20 6d 64 35 73 75 6d 5f 69 6e 69 74 28 29 md5sum_init()
04b0: 3b 0a 20 20 20 6d 61 6e 69 66 65 73 74 5f 63 6c ;. manifest_cl
04c0: 65 61 72 28 70 29 3b 0a 2b 20 20 62 6c 6f 62 5f ear(p);.+ blob_
04d0: 72 65 73 65 74 28 26 6c 69 6e 65 29 3b 0a 20 20 reset(&line);.
04e0: 20 72 65 74 75 72 6e 20 30 3b 0a 20 7d 0a 20 0a return 0;. }. .
04f0: 20 2f 2a 0a 20 2a 2a 20 43 4f 4d 4d 41 4e 44 3a /*. ** COMMAND:
0500: 20 74 65 73 74 2d 70 61 72 73 65 2d 6d 61 6e 69 test-parse-mani
0510: 66 65 73 74 0a 0a fest..