[PATCH] pwdgrp::read_group(): Don't call free() twice with the same address
Sun Aug 17 18:02:00 GMT 2003
On Sun, Aug 17, 2003 at 10:50:58AM -0400, Pierre A. Humblet wrote:
>While Dave Rothenberger has correctly localized the problem
>only fixes the symptom of the bug but not the root cause.
>Setting gr_mem to &null_ptr below should not be necessary
>because the subsequent load() should reset curr_lines to 0
>and call pwdgrp::parse_group (), which sets gr_mem to &null_ptr.
>Thus free() should never be called twice.
> for (int i = 0; i < gr.curr_lines; i++)
> if ((*group_buf)[i].gr_mem != &null_ptr)
> free ((*group_buf)[i].gr_mem);
> (*group_buf)[i].gr_mem = &null_ptr;
> load ("/etc/group");
>The original bug report mentions that the problem only occurs
>when /etc is absent. In that case curr_lines is NOT reset by
>pwdgrp::load, although it is incremented when the default entries
>(the ones with "mkpasswd" and "????????") are added to the internal
>When /etc does not exist, the default entries are added repeatedly
>and the internal group file keeps growing (ditto for passwd).
>I believe that reverting the original patch and applying the one
>below fixes the root bug.
You're absolutely right. Please check in.
More information about the Cygwin-patches