|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
From e061cba1b91650ab08ae8fa50e8cadb13ac3d97d Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
From: Ronnie Sahlberg <ronniesahlberg@gmail.com>
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
Date: Sun, 16 Jun 2013 11:35:14 -0700
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
Subject: [PATCH] URL encoded Targetnames
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
Assume target names are URL encoded with '%' as the special character.
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
Any sequence of '%' followed by two bytes in the target name will be replaced
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
with the byte that the second two bytes represent in hexadecimal.
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
Example
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
iqn.ronnie.test%3A1234
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
will be translated to iqn.ronnie.test:1234
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
---
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
include/iscsi.h | 12 ++++--
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
lib/init.c | 114 +++++++++++++++++++++++++++++++++++++++-----------------
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
lib/login.c | 1 +
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
3 files changed, 88 insertions(+), 39 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
diff --git a/include/iscsi.h b/include/iscsi.h
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
index f14d404..a4ed932 100644
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
--- a/include/iscsi.h
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+++ b/include/iscsi.h
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
@@ -125,6 +125,10 @@ iscsi_set_initial_r2t(struct iscsi_context *iscsi, enum iscsi_initial_r2t initia
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
* iSCSI URL format :
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
* iscsi://[<username>[%<password>]@]<host>[:<port>]/<target-iqn>/<lun>
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
*
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ * Target names are url encoded with '%' as a special character.
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ * Example:
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ * "iqn.ronnie.test%3A1234" will be translated to "iqn.ronnie.test:1234"
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ *
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
* Function will return a pointer to an iscsi url structure if successful,
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
* or it will return NULL and set iscsi_get_error() accrodingly if there was a problem
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
* with the URL.
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
diff --git a/lib/init.c b/lib/init.c
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
index 18f3fb2..60a1b6d 100644
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
--- a/lib/init.c
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+++ b/lib/init.c
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
@@ -358,6 +358,45 @@ iscsi_is_logged_in(struct iscsi_context *iscsi)
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
return iscsi->is_loggedin;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
}
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+static int
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+h2i(int h)
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+{
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ if (h >= 'a' && h <= 'f') {
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ return h - 'a' + 10;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ if (h >= 'A' && h <= 'F') {
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ return h - 'A' + 10;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ return h - '0';
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+}
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+static void
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+iscsi_decode_url_string(char *str)
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+{
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ while (*str) {
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ char *tmp = str;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ char c;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ if (*str++ != '%') {
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ continue;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ if (*str == 0) {
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ return;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ c = h2i(*str++) << 4;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ if (*str == 0) {
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ return;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ c |= h2i(*str++);
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ *tmp++ = c;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ memmove(tmp, str, strlen(str));
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ tmp[strlen(str)] = 0;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+}
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
struct iscsi_url *
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
iscsi_parse_url(struct iscsi_context *iscsi, const char *url, int full)
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
{
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
@@ -464,6 +506,8 @@ iscsi_parse_url(struct iscsi_context *iscsi, const char *url, int full)
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
iscsi_url->lun = l;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
}
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+ iscsi_decode_url_string(&iscsi_url->target[0]);
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
+
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
return iscsi_url;
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
}
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
--
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
1.8.1.4
|
|
![](https://seccdn.libravatar.org/avatar/b58b3d205f0c82b289646cc4d253a4ca9ebdbbfea8dc7d471e83622d74741b05?s=16&d=retro) |
9a1c94a |
|