From: Tim Kosse Date: Fri, 18 Nov 2016 23:34:46 +0000 (+0100) Subject: Fix type mismatch in sftp_find_request X-Git-Tag: 0.68~107 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=09b74971c768b7d74484040ce155d117aff3f237;hp=fa91b55eec241374d3eda4fbeac6f2dc372f1df2;p=PuTTY.git Fix type mismatch in sftp_find_request The id member of the sftp_request structure is of type unsigned int. This type is also used in the sftp_reqfind callback. In sftp_find_request we thus need to pass a pointer to unsigned int to find234. Before this commit, sftp_find_request was passing a pointer to unsigned long to find234, which causes the lookup to fail on big-endian platforms where sizeof(unsigned int) != sizeof(unsigned long), e.g. ppc64. --- diff --git a/sftp.c b/sftp.c index 591b60ba..3357876c 100644 --- a/sftp.c +++ b/sftp.c @@ -352,6 +352,7 @@ void sftp_register(struct sftp_request *req) struct sftp_request *sftp_find_request(struct sftp_packet *pktin) { unsigned long id; + unsigned fid; struct sftp_request *req; if (!pktin) { @@ -363,7 +364,8 @@ struct sftp_request *sftp_find_request(struct sftp_packet *pktin) fxp_internal_error("did not receive a valid SFTP packet\n"); return NULL; } - req = find234(sftp_requests, &id, sftp_reqfind); + fid = (unsigned)id; + req = find234(sftp_requests, &fid, sftp_reqfind); if (!req || !req->registered) { fxp_internal_error("request ID mismatch\n");