[PATCH 5/7] cifs.upcall: clean up flag handling

Jeff Layton <[email protected]>
Newsgroups gmane.linux.file-systems.cifs,gmane.network.samba.internals
Message-ID <[email protected]>
Add a new stack var to hold the flags returned by the decoder routine
so that we don't need to worry so much about preserving "rc".

Signed-off-by: Jeff Layton <[email protected]>
---
 client/cifs.upcall.c |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/client/cifs.upcall.c b/client/cifs.upcall.c
index e60fb50..38be876 100644
--- a/client/cifs.upcall.c
+++ b/client/cifs.upcall.c
@@ -164,7 +164,7 @@ static struct decoded_args {
 	sectype_t	sec;
 };
 
-static int
+static unsigned int
 decode_key_description(const char *desc, struct decoded_args *arg)
 {
 	int retval = 0;
@@ -302,6 +302,7 @@ int main(const int argc, char *const argv[])
 	DATA_BLOB sess_key = data_blob_null;
 	key_serial_t key = 0;
 	size_t datalen;
+	unsigned int have;
 	long rc = 1;
 	int c;
 	char *buf, *princ, *ccname = NULL;
@@ -355,15 +356,14 @@ int main(const int argc, char *const argv[])
 		goto out;
 	}
 
-	rc = decode_key_description(buf, &arg);
-	if ((rc & DKD_MUSTHAVE_SET) != DKD_MUSTHAVE_SET) {
+	have = decode_key_description(buf, &arg);
+	SAFE_FREE(buf);
+	if ((have & DKD_MUSTHAVE_SET) != DKD_MUSTHAVE_SET) {
 		syslog(LOG_ERR, "unable to get necessary params from key "
-				"description (0x%x)", rc);
+				"description (0x%x)", have);
 		rc = 1;
-		SAFE_FREE(buf);
 		goto out;
 	}
-	SAFE_FREE(buf);
 
 	if (arg.ver > CIFS_SPNEGO_UPCALL_VERSION) {
 		syslog(LOG_ERR, "incompatible kernel upcall version: 0x%x",
@@ -372,10 +372,10 @@ int main(const int argc, char *const argv[])
 		goto out;
 	}
 
-	if (rc & DKD_HAVE_PID)
+	if (have & DKD_HAVE_PID)
 		ccname = get_krb5_ccname(arg.pid);
 
-	if (rc & DKD_HAVE_UID) {
+	if (have & DKD_HAVE_UID) {
 		rc = setuid(arg.uid);
 		if (rc == -1) {
 			syslog(LOG_ERR, "setuid: %s", strerror(errno));
-- 
1.6.0.6
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.