Mercurial > hg > nginx
comparison src/core/ngx_file.c @ 1319:345d2095a6d5
fix potential double free(),
found by Coverity's Scan
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 19 Jul 2007 19:11:57 +0000 |
parents | 5383f5232364 |
children | e958b3cab51a |
comparison
equal
deleted
inserted
replaced
1318:114428c61a3a | 1319:345d2095a6d5 |
---|---|
516 if (ctx->init_handler(data, prev) == NGX_ABORT) { | 516 if (ctx->init_handler(data, prev) == NGX_ABORT) { |
517 goto failed; | 517 goto failed; |
518 } | 518 } |
519 | 519 |
520 ctx->data = data; | 520 ctx->data = data; |
521 | |
522 } else { | |
523 data = NULL; | |
521 } | 524 } |
522 | 525 |
523 for ( ;; ) { | 526 for ( ;; ) { |
524 | 527 |
525 ngx_set_errno(0); | 528 ngx_set_errno(0); |
641 | 644 |
642 if (buf.len) { | 645 if (buf.len) { |
643 ngx_free(buf.data); | 646 ngx_free(buf.data); |
644 } | 647 } |
645 | 648 |
646 if (ctx->alloc) { | 649 if (data) { |
647 ngx_free(ctx->data); | 650 ngx_free(data); |
648 ctx->data = prev; | 651 ctx->data = prev; |
649 } | 652 } |
650 | 653 |
651 if (ngx_close_dir(&dir) == NGX_ERROR) { | 654 if (ngx_close_dir(&dir) == NGX_ERROR) { |
652 ngx_log_error(NGX_LOG_CRIT, ctx->log, ngx_errno, | 655 ngx_log_error(NGX_LOG_CRIT, ctx->log, ngx_errno, |