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,