summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
fa91b55)
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.
struct sftp_request *sftp_find_request(struct sftp_packet *pktin)
{
unsigned long id;
struct sftp_request *sftp_find_request(struct sftp_packet *pktin)
{
unsigned long id;
struct sftp_request *req;
if (!pktin) {
struct sftp_request *req;
if (!pktin) {
fxp_internal_error("did not receive a valid SFTP packet\n");
return NULL;
}
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");
if (!req || !req->registered) {
fxp_internal_error("request ID mismatch\n");