mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-06 14:02:47 -05:00
Rewrite some manual char-buffer-handling code.
In the course of recent refactorings I noticed a couple of cases where we were doing old-fashioned preallocation of a char array with some conservative maximum size, then writing into it via *p++ or similar and hoping we got the calculation right. Now we have strbuf and dupcat, so we shouldn't ever have to do that. Fixed as many cases as I could find by searching for allocations of the form 'snewn(foo, char)'. Particularly worth a mention was the Windows GSSAPI setup code, which was directly using the Win32 Registry API, and looks much more legible using the windows/utils/registry.c wrappers. (But that was why I had to enhance them in the previous commit so as to be able to open registry keys read-only: without that, the open operation would actually fail on this key, which is not user-writable.) Also unix/askpass.c, which was doing a careful reallocation of its buffer to avoid secrets being left behind in the vacated memory - which is now just a matter of ensuring we called strbuf_new_nm().
This commit is contained in:
@ -594,9 +594,7 @@ void dlg_listbox_addwithid(dlgcontrol *ctrl, dlgparam *dp,
|
||||
cols = cols ? cols : 1;
|
||||
for (i = 0; i < cols; i++) {
|
||||
int collen = strcspn(text, "\t");
|
||||
char *tmpstr = snewn(collen+1, char);
|
||||
memcpy(tmpstr, text, collen);
|
||||
tmpstr[collen] = '\0';
|
||||
char *tmpstr = mkstr(make_ptrlen(text, collen));
|
||||
gtk_list_store_set(uc->listmodel, &iter, i+1, tmpstr, -1);
|
||||
sfree(tmpstr);
|
||||
text += collen;
|
||||
|
Reference in New Issue
Block a user