summaryrefslogtreecommitdiffstats
path: root/curl-7.15.5-bz746849.patch
blob: 0994c838b239f88b3440c9e981b9f751850483aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
From 85d002123e5dea3de2499617d619253023335d8e Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Fri, 12 Aug 2011 14:48:32 +0200
Subject: [PATCH 1/2] added --delegation

Using this option with an argument being set to one of
none/policy/always instructs libcurl how to deal with GSS
credentials. Or rather how it tells the server that delegation is fine
or not.

Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
 src/main.c |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/src/main.c b/src/main.c
index 44dd2c4..0753429 100644
--- a/src/main.c
+++ b/src/main.c
@@ -359,6 +359,7 @@ struct Configurable {
   int ftp_filemethod;
 
   bool ignorecl; /* --ignore-content-length */
+  long gssapi_delegation;
 };
 
 #define WARN_PREFIX "Warning: "
@@ -489,6 +490,7 @@ static void help(void)
     "    --data-ascii <data>  HTTP POST ASCII data (H)",
     "    --data-binary <data> HTTP POST binary data (H)",
     "    --negotiate     Use HTTP Negotiate Authentication (H)",
+    "    --delegation STRING GSS-API delegation permission",
     "    --digest        Use HTTP Digest Authentication (H)",
     "    --disable-eprt  Inhibit using EPRT or LPRT (F)",
     "    --disable-epsv  Inhibit using EPSV (F)",
@@ -1097,6 +1099,18 @@ static int formparse(struct Configurable *config,
   return 0;
 }
 
+static long delegation(struct Configurable *config,
+                       char *str)
+{
+  if(!strcasecmp("none", str))
+    return CURLGSSAPI_DELEGATION_NONE;
+  if(!strcasecmp("policy", str))
+    return CURLGSSAPI_DELEGATION_POLICY_FLAG;
+  if(!strcasecmp("always", str))
+    return CURLGSSAPI_DELEGATION_FLAG;
+  warnf(config, "unrecognized delegation method '%s', using none\n", str);
+  return CURLGSSAPI_DELEGATION_NONE;
+}
 
 typedef enum {
   PARAM_OK,
@@ -1351,6 +1365,8 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
     {"$v", "ftp-ssl-reqd", FALSE},
     {"$w", "proxy-negotiate",   FALSE},
 
+    {"$G", "delegation", TRUE},
+
     {"0", "http1.0",     FALSE},
     {"1", "tlsv1",       FALSE},
     {"2", "sslv2",       FALSE},
@@ -1798,6 +1814,9 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         else
           return PARAM_LIBCURL_DOESNT_SUPPORT;
         break;
+      case 'G': /* --delegation LEVEL */
+        config->gssapi_delegation = delegation(config, nextarg);
+        break;
       }
       break;
     case '#': /* --progress-bar */
@@ -4029,6 +4048,11 @@ operate(struct Configurable *config, int argc, char *argv[])
         /* curl x.xx.x */
         curl_easy_setopt(curl, CURLOPT_FTP_ALTERNATIVE_TO_USER, config->ftp_alternative_to_user);
 
+        /* new in 7.22.0 */
+        if(config->gssapi_delegation)
+          curl_easy_setopt(curl, CURLOPT_GSSAPI_DELEGATION,
+                           config->gssapi_delegation);
+
         retry_numretries = config->req_retry;
 
         retrystart = curlx_tvnow();
-- 
1.7.1


From 1a5566b1e84d0143899538f469596caf8f10d666 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Fri, 12 Aug 2011 23:51:41 +0200
Subject: [PATCH 2/2] docs: --delegation

Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
 docs/curl.1 |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/docs/curl.1 b/docs/curl.1
index 2658954..61bd4e9 100644
--- a/docs/curl.1
+++ b/docs/curl.1
@@ -256,6 +256,18 @@ the \fI--data-ascii\fP option, this is for you.
 
 If this option is used several times, the ones following the first will
 append data.
+.IP "--delegation LEVEL"
+Set \fILEVEL\fP to tell the server what it is allowed to delegate when it
+comes to user credentials. Used with GSS/kerberos.
+.RS
+.IP "none"
+Don't allow any delegation.
+.IP "policy"
+Delegates if and only if the OK-AS-DELEGATE flag is set in the Kerberos
+service ticket, which is a matter of realm policy.
+.IP "always"
+Unconditionally allow the server to delegate.
+.RE
 .IP "--digest"
 (HTTP) Enables HTTP Digest authentication. This is a authentication that
 prevents the password from being sent over the wire in clear text. Use this in
-- 
1.7.1