+-- On Fri, 8 Jan 2016, Wolfgang Bumiller wrote --+ | On Fri, Jan 08, 2016 at 07:29:31PM +0530, P J P wrote: | > + if (!strncmp(keyname_buf, "<-", 2)) | > and remove the 'keyname_len' altogether. | | This wouldn't catch '<' without '-'. (`sendkey <`) | Also, strncmp with a length of 1 (in the original) seems weird.
Ah, true. | keyname_len is not useless and perhaps it would be best to just do an | early error check there as I do below. | | Alternatively the if() can simply happen after pstrcpy() as a cut-off | error should be good enough anyway. | | @@ -1749,6 +1749,9 @@ void hmp_sendkey(Monitor *mon, const QDict *qdict) | while (1) { | separator = strchr(keys, '-'); | keyname_len = separator ? separator - keys : strlen(keys); | + if (keyname_len >= sizeof(keyname_buf)) | + goto err_out; | + | pstrcpy(keyname_buf, sizeof(keyname_buf), keys); Yes, this looks good. With that, maybe 'keyname_len' could be sent to pstrcpy() above, instead of sizeof(keyname_buf)? If so, then the subsequent if could say: if (!strcmp(keyname_buf, "<")). -- - P J P 47AF CE69 3A90 54AA 9045 1053 DD13 3D32 FE5B 041F