Page MenuHomeFreeBSD

D33547.id100474.diff
No OneTemporary

D33547.id100474.diff

diff --git a/lib/libiscsiutil/keys.c b/lib/libiscsiutil/keys.c
--- a/lib/libiscsiutil/keys.c
+++ b/lib/libiscsiutil/keys.c
@@ -59,22 +59,22 @@
}
void
-keys_load(struct keys *keys, const struct pdu *pdu)
+keys_load(struct keys *keys, const char *data, size_t len)
{
int i;
char *keys_data, *name, *pair, *value;
size_t pair_len;
- if (pdu->pdu_data_len == 0)
+ if (len == 0)
return;
- if (pdu->pdu_data[pdu->pdu_data_len - 1] != '\0')
+ if (data[len - 1] != '\0')
log_errx(1, "protocol error: key not NULL-terminated\n");
- keys_data = malloc(pdu->pdu_data_len);
+ keys_data = malloc(len);
if (keys_data == NULL)
log_err(1, "malloc");
- memcpy(keys_data, pdu->pdu_data, pdu->pdu_data_len);
+ memcpy(keys_data, data, len);
/*
* XXX: Review this carefully.
@@ -96,15 +96,15 @@
keys->keys_names[i], keys->keys_values[i]);
pair += pair_len + 1; /* +1 to skip the terminating '\0'. */
- if (pair == keys_data + pdu->pdu_data_len)
+ if (pair == keys_data + len)
break;
- assert(pair < keys_data + pdu->pdu_data_len);
+ assert(pair < keys_data + len);
}
free(keys_data);
}
void
-keys_save(struct keys *keys, struct pdu *pdu)
+keys_save(struct keys *keys, char **datap, size_t *lenp)
{
FILE *fp;
char *data;
@@ -131,8 +131,8 @@
data = NULL;
}
- pdu->pdu_data = data;
- pdu->pdu_data_len = len;
+ *datap = data;
+ *lenp = len;
}
const char *
diff --git a/lib/libiscsiutil/libiscsiutil.h b/lib/libiscsiutil/libiscsiutil.h
--- a/lib/libiscsiutil/libiscsiutil.h
+++ b/lib/libiscsiutil/libiscsiutil.h
@@ -109,14 +109,28 @@
struct keys *keys_new(void);
void keys_delete(struct keys *key);
-void keys_load(struct keys *keys, const struct pdu *pdu);
-void keys_save(struct keys *keys, struct pdu *pdu);
+void keys_load(struct keys *keys, const char *data,
+ size_t len);
+void keys_save(struct keys *keys, char **datap,
+ size_t *lenp);
const char *keys_find(struct keys *keys, const char *name);
void keys_add(struct keys *keys,
const char *name, const char *value);
void keys_add_int(struct keys *keys,
const char *name, int value);
+static __inline void
+keys_load_pdu(struct keys *keys, const struct pdu *pdu)
+{
+ keys_load(keys, pdu->pdu_data, pdu->pdu_data_len);
+}
+
+static __inline void
+keys_save_pdu(struct keys *keys, struct pdu *pdu)
+{
+ keys_save(keys, &pdu->pdu_data, &pdu->pdu_data_len);
+}
+
struct pdu *pdu_new(struct connection *ic);
struct pdu *pdu_new_response(struct pdu *request);
int pdu_ahs_length(const struct pdu *pdu);
diff --git a/usr.sbin/ctld/discovery.c b/usr.sbin/ctld/discovery.c
--- a/usr.sbin/ctld/discovery.c
+++ b/usr.sbin/ctld/discovery.c
@@ -287,7 +287,7 @@
log_debugx("beginning discovery session; waiting for Text PDU");
request = text_receive(&conn->conn);
request_keys = keys_new();
- keys_load(request_keys, request);
+ keys_load_pdu(request_keys, request);
send_targets = keys_find(request_keys, "SendTargets");
if (send_targets == NULL)
@@ -317,7 +317,7 @@
}
}
}
- keys_save(response_keys, response);
+ keys_save_pdu(response_keys, response);
pdu_send(response);
pdu_delete(response);
diff --git a/usr.sbin/ctld/login.c b/usr.sbin/ctld/login.c
--- a/usr.sbin/ctld/login.c
+++ b/usr.sbin/ctld/login.c
@@ -236,7 +236,7 @@
request = login_receive(conn, false);
request_keys = keys_new();
- keys_load(request_keys, request);
+ keys_load_pdu(request_keys, request);
chap_a = keys_find(request_keys, "CHAP_A");
if (chap_a == NULL) {
@@ -270,7 +270,7 @@
keys_add(response_keys, "CHAP_C", chap_c);
free(chap_i);
free(chap_c);
- keys_save(response_keys, response);
+ keys_save_pdu(response_keys, response);
pdu_send(response);
pdu_delete(response);
keys_delete(response_keys);
@@ -288,7 +288,7 @@
request = login_receive(conn, false);
request_keys = keys_new();
- keys_load(request_keys, request);
+ keys_load_pdu(request_keys, request);
chap_n = keys_find(request_keys, "CHAP_N");
if (chap_n == NULL) {
@@ -352,7 +352,7 @@
* Actually, one more thing: mutual authentication.
*/
request_keys = keys_new();
- keys_load(request_keys, request);
+ keys_load_pdu(request_keys, request);
chap_i = keys_find(request_keys, "CHAP_I");
chap_c = keys_find(request_keys, "CHAP_C");
if (chap_i != NULL || chap_c != NULL) {
@@ -389,7 +389,7 @@
keys_add(response_keys, "CHAP_N", auth->a_mutual_user);
keys_add(response_keys, "CHAP_R", chap_r);
free(chap_r);
- keys_save(response_keys, response);
+ keys_save_pdu(response_keys, response);
keys_delete(response_keys);
} else {
log_debugx("initiator did not request target authentication");
@@ -635,7 +635,7 @@
response_keys = keys_new();
keys_add(response_keys, "TargetAddress", target_address);
- keys_save(response_keys, response);
+ keys_save_pdu(response_keys, response);
pdu_send(response);
pdu_delete(response);
keys_delete(response_keys);
@@ -753,7 +753,7 @@
}
request_keys = keys_new();
- keys_load(request_keys, request);
+ keys_load_pdu(request_keys, request);
response = login_new_response(request);
bhslr2 = (struct iscsi_bhs_login_response *)response->pdu_bhs;
@@ -801,7 +801,7 @@
log_debugx("operational parameter negotiation done; "
"transitioning to Full Feature Phase");
- keys_save(response_keys, response);
+ keys_save_pdu(response_keys, response);
pdu_send(response);
pdu_delete(response);
keys_delete(response_keys);
@@ -867,7 +867,7 @@
* XXX: Implement the C flag some day.
*/
request_keys = keys_new();
- keys_load(request_keys, request);
+ keys_load_pdu(request_keys, request);
assert(conn->conn_initiator_name == NULL);
initiator_name = keys_find(request_keys, "InitiatorName");
@@ -1036,7 +1036,7 @@
keys_add_int(response_keys,
"TargetPortalGroupTag", pg->pg_tag);
}
- keys_save(response_keys, response);
+ keys_save_pdu(response_keys, response);
pdu_send(response);
pdu_delete(response);
diff --git a/usr.sbin/iscsid/discovery.c b/usr.sbin/iscsid/discovery.c
--- a/usr.sbin/iscsid/discovery.c
+++ b/usr.sbin/iscsid/discovery.c
@@ -177,7 +177,7 @@
request = text_new_request(&conn->conn);
request_keys = keys_new();
keys_add(request_keys, "SendTargets", "All");
- keys_save(request_keys, request);
+ keys_save_pdu(request_keys, request);
keys_delete(request_keys);
request_keys = NULL;
pdu_send(request);
@@ -187,7 +187,7 @@
log_debugx("waiting for Text Response");
response = text_receive(&conn->conn);
response_keys = keys_new();
- keys_load(response_keys, response);
+ keys_load_pdu(response_keys, response);
for (i = 0; i < KEYS_MAX; i++) {
if (response_keys->keys_names[i] == NULL)
break;
diff --git a/usr.sbin/iscsid/login.c b/usr.sbin/iscsid/login.c
--- a/usr.sbin/iscsid/login.c
+++ b/usr.sbin/iscsid/login.c
@@ -198,7 +198,7 @@
assert (bhslr->bhslr_status_class == 1);
response_keys = keys_new();
- keys_load(response_keys, response);
+ keys_load_pdu(response_keys, response);
target_address = keys_find(response_keys, "TargetAddress");
if (target_address == NULL)
@@ -543,7 +543,7 @@
keys_add(request_keys, "DefaultTime2Wait", "0");
keys_add(request_keys, "DefaultTime2Retain", "0");
keys_add(request_keys, "ErrorRecoveryLevel", "0");
- keys_save(request_keys, request);
+ keys_save_pdu(request_keys, request);
keys_delete(request_keys);
request_keys = NULL;
pdu_send(request);
@@ -552,7 +552,7 @@
response = login_receive(&conn->conn);
response_keys = keys_new();
- keys_load(response_keys, response);
+ keys_load_pdu(response_keys, response);
for (i = 0; i < KEYS_MAX; i++) {
if (response_keys->keys_names[i] == NULL)
break;
@@ -607,7 +607,7 @@
request = login_new_request(conn, BHSLR_STAGE_SECURITY_NEGOTIATION);
request_keys = keys_new();
keys_add(request_keys, "CHAP_A", "5");
- keys_save(request_keys, request);
+ keys_save_pdu(request_keys, request);
keys_delete(request_keys);
pdu_send(request);
pdu_delete(request);
@@ -636,7 +636,7 @@
conn = (struct iscsid_connection *)response->pdu_connection;
response_keys = keys_new();
- keys_load(response_keys, response);
+ keys_load_pdu(response_keys, response);
/*
* First, compute the response.
@@ -693,7 +693,7 @@
free(mutual_chap_c);
}
- keys_save(request_keys, request);
+ keys_save_pdu(request_keys, request);
keys_delete(request_keys);
pdu_send(request);
pdu_delete(request);
@@ -710,7 +710,7 @@
conn = (struct iscsid_connection *)response->pdu_connection;
response_keys = keys_new();
- keys_load(response_keys, response);
+ keys_load_pdu(response_keys, response);
chap_n = keys_find(response_keys, "CHAP_N");
if (chap_n == NULL)
@@ -816,7 +816,7 @@
} else {
keys_add(request_keys, "SessionType", "Discovery");
}
- keys_save(request_keys, request);
+ keys_save_pdu(request_keys, request);
keys_delete(request_keys);
pdu_send(request);
pdu_delete(request);
@@ -824,7 +824,7 @@
response = login_receive(&conn->conn);
response_keys = keys_new();
- keys_load(response_keys, response);
+ keys_load_pdu(response_keys, response);
for (i = 0; i < KEYS_MAX; i++) {
if (response_keys->keys_names[i] == NULL)

File Metadata

Mime Type
text/plain
Expires
Thu, May 1, 12:18 AM (10 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17865645
Default Alt Text
D33547.id100474.diff (8 KB)

Event Timeline