Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68abaffa authored by Jeff Layton's avatar Jeff Layton Committed by Steve French
Browse files

cifs: simplify SMB header check routine



...just cleanup. There should be no behavior change.

Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Reviewed-by: default avatarPavel Shilovsky <piastryyy@gmail.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 2db7c581
Loading
Loading
Loading
Loading
+24 −22
Original line number Diff line number Diff line
@@ -381,29 +381,31 @@ header_assemble(struct smb_hdr *buffer, char smb_command /* command */ ,
}

static int
checkSMBhdr(struct smb_hdr *smb, __u16 mid)
check_smb_hdr(struct smb_hdr *smb, __u16 mid)
{
	/* Make sure that this really is an SMB, that it is a response,
	   and that the message ids match */
	if ((*(__le32 *) smb->Protocol == cpu_to_le32(0x424d53ff)) &&
		(mid == smb->Mid)) {
	/* does it have the right SMB "signature" ? */
	if (*(__le32 *) smb->Protocol != cpu_to_le32(0x424d53ff)) {
		cERROR(1, "Bad protocol string signature header 0x%x",
			*(unsigned int *)smb->Protocol);
		return 1;
	}

	/* Make sure that message ids match */
	if (mid != smb->Mid) {
		cERROR(1, "Mids do not match. received=%u expected=%u",
			smb->Mid, mid);
		return 1;
	}

	/* if it's a response then accept */
	if (smb->Flags & SMBFLG_RESPONSE)
		return 0;
		else {

	/* only one valid case where server sends us request */
	if (smb->Command == SMB_COM_LOCKING_ANDX)
		return 0;
			else
				cERROR(1, "Received Request not response");
		}
	} else { /* bad signature or mid */
		if (*(__le32 *) smb->Protocol != cpu_to_le32(0x424d53ff))
			cERROR(1, "Bad protocol string signature header %x",
				*(unsigned int *) smb->Protocol);
		if (mid != smb->Mid)
			cERROR(1, "Mids do not match");
	}
	cERROR(1, "bad smb detected. The Mid=%d", smb->Mid);

	cERROR(1, "Server sent request, not response. mid=%u", smb->Mid);
	return 1;
}

@@ -448,7 +450,7 @@ checkSMB(struct smb_hdr *smb, __u16 mid, unsigned int length)
		return 1;
	}

	if (checkSMBhdr(smb, mid))
	if (check_smb_hdr(smb, mid))
		return 1;
	clc_len = smbCalcSize_LE(smb);