hex2chr() takes care not to run over the end of a short string. 101736a14c (pkt-line: extern packet_length(), 2020-05-19) turned the input parameter of packet_length() from a string pointer into an array of known length, making string length checks unnecessary. Get rid of them by using hexval() directly. The resulting branchless code is simpler and it becomes easier to see that the function mirrors set_packet_header(). Signed-off-by: René Scharfe <l.s.r@xxxxxx> --- pkt-line.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkt-line.c b/pkt-line.c index 62b4208b66..6e022029ca 100644 --- a/pkt-line.c +++ b/pkt-line.c @@ -375,8 +375,10 @@ static int get_packet_data(int fd, char **src_buf, size_t *src_size, int packet_length(const char lenbuf_hex[4]) { - int val = hex2chr(lenbuf_hex); - return (val < 0) ? val : (val << 8) | hex2chr(lenbuf_hex + 2); + return hexval(lenbuf_hex[0]) << 12 | + hexval(lenbuf_hex[1]) << 8 | + hexval(lenbuf_hex[2]) << 4 | + hexval(lenbuf_hex[3]); } static char *find_packfile_uri_path(const char *buffer) -- 2.41.0