--- lanserv_ipmi.c.org	2005-11-16 19:12:44.000000000 +0100
+++ lanserv_ipmi.c	2005-11-16 19:15:15.000000000 +0100
@@ -331,7 +331,7 @@
     pos[5] = rsp->cmd;
 
     csum = ipmb_checksum(pos+3, 3, 0);
-    csum = ipmb_checksum(rsp->data, rsp->data_len, csum);
+    csum = ipmb_checksum(rsp->data, rsp->data_len, -csum);
 
     vec[0].iov_base = data;
 
@@ -915,7 +915,7 @@
 	    idx = msg->data[1];
 	} else if (idx == 0) {
 	    idx = session->idx;
-	} else {
+	}
 	    int i;
 
 	    if (idx <= lan->active_sessions) {
@@ -929,13 +929,12 @@
 		    }
 		}
 	    }
-	}
     }
 
     if (nses) {
-	data[1] = session->idx;
-	data[4] = session->userid;
-	data[5] = session->priv;
+	data[1] = nses->idx;
+	data[4] = nses->userid;
+	data[5] = nses->priv;
     } else {
 	data[1] = 0;
 	data[4] = 0;
