(/home/sate/Testcases/c/cve/wireshark-1.2.0/tools/lemon/lemon.c) |
| |
| 2539 | | | void Parse(struct lemon *gp) |
| 2540 | | | { |
| 2541 | | | struct pstate ps; |
| 2542 | | | FILE *fp; |
| 2543 | | | char *filebuf; |
| 2544 | | | long filesize; |
| 2545 | | | int lineno; |
| 2546 | | | char c; |
| 2547 | | | char *cp, *nextcp; |
| 2548 | | | int startline = 0; |
| 2549 | | | |
| 2550 | | | memset(&ps, '\0', sizeof(ps)); |
| 2551 | | | ps.gp = gp; |
| 2552 | | | ps.filename = gp->filename; |
| 2553 | | | ps.errorcnt = 0; |
| 2554 | | | ps.state = INITIALIZE; |
| 2555 | | | ps.prevrule = NULL; |
| 2556 | | | ps.preccounter = 0; |
| 2557 | | | ps.lastrule = NULL; |
| 2558 | | | ps.firstrule = NULL; |
| 2559 | | | ps.lhs = NULL; |
| 2560 | | | ps.nrhs = 0; |
| 2561 | | | ps.lhsalias = NULL; |
| 2562 | | | ps.declkeyword = NULL; |
| 2563 | | | ps.declargslot = NULL; |
| 2564 | | | ps.declassoc = UNK; |
| 2565 | | | ps.fallback = NULL; |
| 2566 | | | |
| 2567 | | | |
| 2568 | | | fp = fopen(ps.filename,"rb"); |
Event 1:
fopen() allocates and returns the resource of interest.
hide
|
|
| 2569 | | | if( fp==0 ){ |
Event 3:
Skipping " if". fp == 0 evaluates to false.
hide
|
|
| 2570 | | | ErrorMsg(ps.filename,0,"Can't open this file for reading."); |
| 2571 | | | gp->errorcnt++; |
| 2572 | | | return; |
| 2573 | | | } |
| 2574 | | | fseek(fp,0,2); |
Event 4:
The resource of interest is passed to fseek() as the first argument. - fseek() does not free it or save any references that are freed later.
- fp, which evaluates to fopen(ps.filename, "rb") from lemon.c:2568, is passed to fseek() as the first argument.
See related event 2.
hide
|
|
| 2575 | | | filesize = ftell(fp); |
Event 5:
The resource of interest is passed to ftell(). - ftell() does not free it or save any references that are freed later.
- fp, which evaluates to fopen(ps.filename, "rb") from lemon.c:2568, is passed to ftell().
See related event 2.
hide
|
|
| 2576 | | | rewind(fp); |
Event 6:
The resource of interest is passed to rewind(). - rewind() does not free it or save any references that are freed later.
- fp, which evaluates to fopen(ps.filename, "rb") from lemon.c:2568, is passed to rewind().
See related event 2.
hide
|
|
| 2577 | | | |
| 2578 | | | filebuf = (char *)malloc( filesize+1 ); |
| 2579 | | | if( filebuf==0 ){ |
Event 7:
Taking true branch. filebuf == 0 evaluates to true.
hide
|
|
| 2580 | | | ErrorMsg(ps.filename,0,"Can't allocate %ld of memory to hold this file.", |
| 2581 | | | filesize+1); |
| 2582 | | | gp->errorcnt++; |
| 2583 | | | return; |
| |