On Tue, Oct 12, 2010 at 11:49:27AM +0200, Takashi Iwai wrote: > Mark Brown wrote: > Argh, yes, I'm (again) confused by that behavior. > The problem is the potential buffer overflow, indeed. snprintf() > returns the size that would be printed. Thus a safe code would be > like: > > list_for_each_entry(dai, &dai_list, list) { > int len = snprintf(buf + ret, PAGE_SIZE - ret, "%s\n", dai->name); > if (len < 0) > continue; > ret += len; > if (ret >= PAGE_SIZE) { > ret = PAGE_SIZE; > break; > } > } Yes, this form is better for that variant of the loop - that is safe and legible without relying on current implementation details of snprintf(). _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel