aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/curl/curl.h6
-rw-r--r--lib/Makefile.am4
-rw-r--r--lib/getpass.c224
-rw-r--r--lib/getpass.h35
-rw-r--r--lib/transfer.c1
-rw-r--r--lib/url.c107
6 files changed, 14 insertions, 363 deletions
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 5aa4cc923..0f9e38b5b 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -123,6 +123,7 @@ typedef size_t (*curl_read_callback)(char *buffer,
size_t nitems,
void *instream);
+ /* not used since 7.10.8, will be removed in a future release */
typedef int (*curl_passwd_callback)(void *clientp,
const char *prompt,
char *buffer,
@@ -503,11 +504,10 @@ typedef enum {
this option is used only if SSL_VERIFYPEER is true */
CINIT(CAINFO, OBJECTPOINT, 65),
- /* Function pointer to replace the internal password prompt */
+ /* OBSOLETE since 7.10.8 */
CINIT(PASSWDFUNCTION, FUNCTIONPOINT, 66),
- /* Custom pointer that gets passed as first argument to the password
- function */
+ /* OBSOLETE since 7.10.8 */
CINIT(PASSWDDATA, OBJECTPOINT, 67),
/* Maximum number of http redirects to follow */
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 63ca2c4c7..e09e921a5 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -64,13 +64,13 @@ endif
libcurl_la_LDFLAGS = $(UNDEF) $(VERSION) $(ARESLIB)
-libcurl_la_SOURCES = arpa_telnet.h file.c getpass.h netrc.h timeval.c \
+libcurl_la_SOURCES = arpa_telnet.h file.c netrc.h timeval.c \
base64.c file.h hostip.c progress.c timeval.h base64.h formdata.c \
hostip.h progress.h cookie.c formdata.h http.c sendf.c cookie.h ftp.c \
http.h sendf.h url.c dict.c ftp.h if2ip.c speedcheck.c url.h dict.h \
getdate.c if2ip.h speedcheck.h urldata.h getdate.h ldap.c ssluse.c \
version.c getenv.c ldap.h ssluse.h escape.c mprintf.c telnet.c escape.h \
-getpass.c netrc.c telnet.h getinfo.c getinfo.h transfer.c strequal.c \
+netrc.c telnet.h getinfo.c getinfo.h transfer.c strequal.c \
strequal.h easy.c security.h security.c krb4.c krb4.h memdebug.c \
memdebug.h inet_ntoa_r.h http_chunks.c http_chunks.h strtok.c strtok.h \
connect.c connect.h llist.c llist.h hash.c hash.h multi.c \
diff --git a/lib/getpass.c b/lib/getpass.c
deleted file mode 100644
index 7db8f51a9..000000000
--- a/lib/getpass.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/* ============================================================================
- * Copyright (C) 1998 - 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * Redistribution and use are freely permitted provided that:
- *
- * 1) This header remain in tact.
- * 2) The prototypes for getpass and getpass_r are not changed from:
- * char *getpass(const char *prompt)
- * char *getpass_r(const char *prompt, char* buffer, int buflen)
- * 3) This source code is not used outside of this(getpass.c) file.
- * 4) Any changes to this(getpass.c) source code are made publicly available.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * ============================================================================
- *
- * $Id$
- *
- * The spirit of this license is to allow use of this source code in any
- * project be it open or closed but still encourage the use of the open,
- * library based equivilents.
- *
- * Author(s):
- * Angus Mackay <amackay@gus.ml.org>
- *
- * Contributor(s):
- * Daniel Stenberg <daniel@haxx.se>
- */
-
-#include "setup.h" /* setup.h is required for read() prototype */
-
-#ifndef HAVE_GETPASS_R
-
-#ifndef WIN32
-#ifdef VMS
-#include <stdio.h>
-#include <string.h>
-#include descrip
-#include starlet
-#include iodef
-#include iosbdef
-char *getpass_r(const char *prompt, char *buffer, size_t buflen)
-{
- long sts;
- short chan;
- struct _iosb iosb;
- $DESCRIPTOR(ttdesc, "TT");
-
- buffer[0]='\0';
- if ((sts = sys$assign(&ttdesc, &chan,0,0)) & 1) {
- if (((sts = sys$qiow(0, chan, IO$_READPROMPT | IO$M_NOECHO, &iosb, 0, 0, buffer, buflen, 0, 0, prompt, strlen(prompt))) & 1) && (iosb.iosb$w_status&1)) {
- buffer[iosb.iosb$w_bcnt] = '\0';
- }
- sts = sys$dassgn(chan);
- }
- return buffer; /* we always return success */
-}
-#else /* VMS */
-#ifdef HAVE_TERMIOS_H
-# if !defined(HAVE_TCGETATTR) && !defined(HAVE_TCSETATTR)
-# undef HAVE_TERMIOS_H
-# endif
-#endif
-
-#ifndef RETSIGTYPE
-# define RETSIGTYPE void
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdio.h>
-#include <signal.h>
-#ifdef HAVE_TERMIOS_H
-# include <termios.h>
-#else
-# ifdef HAVE_TERMIO_H
-# include <termio.h>
-# else
-# endif
-#endif
-
-/* The last #include file should be: */
-#ifdef CURLDEBUG
-#include "memdebug.h"
-#endif
-
-char *getpass_r(const char *prompt, char *buffer, size_t buflen)
-{
- FILE *infp;
- char infp_fclose = 0;
- FILE *outfp;
- RETSIGTYPE (*sigint)();
-#ifdef SIGTSTP
- RETSIGTYPE (*sigtstp)();
-#endif
- size_t bytes_read;
- int infd;
- int outfd;
-#ifdef HAVE_TERMIOS_H
- struct termios orig;
- struct termios noecho;
-#else
-# ifdef HAVE_TERMIO_H
- struct termio orig;
- struct termio noecho;
-# else
-# endif
-#endif
-
- sigint = signal(SIGINT, SIG_IGN);
-#ifdef SIGTSTP
- sigtstp = signal(SIGTSTP, SIG_IGN);
-#endif
-
- infp=fopen("/dev/tty", "r");
- if( NULL == infp )
- infp = stdin;
- else
- infp_fclose = 1;
-
- outfp = stderr;
-
- infd = fileno(infp);
- outfd = fileno(outfp);
-
- /* dissable echo */
-#ifdef HAVE_TERMIOS_H
- tcgetattr(outfd, &orig);
-
- noecho = orig;
- noecho.c_lflag &= ~ECHO;
- tcsetattr(outfd, TCSANOW, &noecho);
-#else
-# ifdef HAVE_TERMIO_H
- ioctl(outfd, TCGETA, &orig);
- noecho = orig;
- noecho.c_lflag &= ~ECHO;
- ioctl(outfd, TCSETA, &noecho);
-# else
-# endif
-#endif
-
- fputs(prompt, outfp);
- fflush(outfp);
-
- bytes_read=read(infd, buffer, buflen);
- buffer[bytes_read > 0 ? (bytes_read -1) : 0] = '\0';
-
- /* print a new line if needed */
-#ifdef HAVE_TERMIOS_H
- fputs("\n", outfp);
-#else
-# ifdef HAVE_TERMIO_H
- fputs("\n", outfp);
-# else
-# endif
-#endif
-
- /*
- * reset term charectaristics, use TCSAFLUSH incase the
- * user types more than buflen
- */
-#ifdef HAVE_TERMIOS_H
- tcsetattr(outfd, TCSAFLUSH, &orig);
-#else
-# ifdef HAVE_TERMIO_H
- ioctl(outfd, TCSETA, &orig);
-# else
-# endif
-#endif
-
- signal(SIGINT, sigint);
-#ifdef SIGTSTP
- signal(SIGTSTP, sigtstp);
-#endif
-
- if(infp_fclose)
- fclose(infp);
-
- return buffer; /* we always return success */
-}
-#endif /* VMS */
-#else /* WIN32 */
-#include <stdio.h>
-#include <conio.h>
-char *getpass_r(const char *prompt, char *buffer, int buflen)
-{
- int i;
- printf("%s", prompt);
-
- for(i=0; i<buflen; i++) {
- buffer[i] = getch();
- if ( buffer[i] == '\r' ) {
- buffer[i] = 0;
- break;
- }
- }
- /* if user didn't hit ENTER, terminate buffer */
- if (i==buflen)
- buffer[buflen-1]=0;
-
- return buffer; /* we always return success */
-}
-#endif
-
-#endif /* ifndef HAVE_GETPASS_R */
-
-#if 0
-/* for consistensy, here's the old-style function: */
-char *getpass(const char *prompt)
-{
- static char buf[256];
- return getpass_r(prompt, buf, sizeof(buf));
-}
-#endif
diff --git a/lib/getpass.h b/lib/getpass.h
deleted file mode 100644
index af24dbcac..000000000
--- a/lib/getpass.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef __GETPASS_H
-#define __GETPASS_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2003, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at http://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- * $Id$
- ***************************************************************************/
-#ifndef HAVE_GETPASS_R
-/* If there's a system-provided function named like this, we trust it is
- also found in one of the standard headers. */
-
-/*
- * Returning NULL will abort the continued operation!
- */
-char* getpass_r(const char *prompt, char* buffer, size_t buflen );
-#endif
-
-#endif
diff --git a/lib/transfer.c b/lib/transfer.c
index c7e9bac44..956a47996 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -86,7 +86,6 @@
#include "transfer.h"
#include "sendf.h"
#include "speedcheck.h"
-#include "getpass.h"
#include "progress.h"
#include "getdate.h"
#include "http.h"
diff --git a/lib/url.c b/lib/url.c
index c76ad9e7f..7271af1da 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -97,7 +97,6 @@
#include "if2ip.h"
#include "transfer.h"
#include "sendf.h"
-#include "getpass.h"
#include "progress.h"
#include "cookie.h"
#include "strequal.h"
@@ -241,20 +240,6 @@ CURLcode Curl_close(struct SessionHandle *data)
return CURLE_OK;
}
-static
-int my_getpass(void *clientp, const char *prompt, char* buffer, int buflen )
-{
- char *retbuf;
- clientp=NULL; /* prevent compiler warning */
-
- retbuf = getpass_r(prompt, buffer, buflen);
- if(NULL == retbuf)
- return 1;
- else
- return 0; /* success */
-}
-
-
CURLcode Curl_open(struct SessionHandle **curl)
{
/* We don't yet support specifying the URL at this point */
@@ -287,9 +272,6 @@ CURLcode Curl_open(struct SessionHandle **curl)
/* use fread as default function to read input */
data->set.fread = (curl_read_callback)fread;
- /* set the default passwd function */
- data->set.fpasswd = my_getpass;
-
data->set.infilesize = -1; /* we don't know any size */
data->state.current_speed = -1; /* init to negative == impossible */
@@ -949,25 +931,6 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option, ...)
*/
data->set.progress_client = va_arg(param, void *);
break;
- case CURLOPT_PASSWDFUNCTION:
- /*
- * Password prompt callback
- */
- data->set.fpasswd = va_arg(param, curl_passwd_callback);
- /*
- * if the callback provided is null, reset the default callback
- */
- if(!data->set.fpasswd)
- {
- data->set.fpasswd = my_getpass;
- }
- break;
- case CURLOPT_PASSWDDATA:
- /*
- * Custom client data to pass to the password callback
- */
- data->set.passwd_client = va_arg(param, void *);
- break;
case CURLOPT_PROXYUSERPWD:
/*
* user:password needed to use the proxy
@@ -1936,8 +1899,6 @@ static CURLcode CreateConnection(struct SessionHandle *data,
char endbracket;
char user[MAX_CURL_USER_LENGTH];
char passwd[MAX_CURL_PASSWORD_LENGTH];
- bool passwdgiven=FALSE; /* set TRUE if an application-provided password has
- been set */
int rc;
#ifdef HAVE_SIGACTION
@@ -2157,32 +2118,9 @@ static CURLcode CreateConnection(struct SessionHandle *data,
if(conn->bits.proxy_user_passwd) {
char proxyuser[MAX_CURL_USER_LENGTH]="";
char proxypasswd[MAX_CURL_PASSWORD_LENGTH]="";
- passwdgiven = FALSE;
-
- if(*data->set.proxyuserpwd != ':') {
- /* the name is given, get user+password */
- sscanf(data->set.proxyuserpwd, "%127[^:]:%127[^\n]",
- proxyuser, proxypasswd);
- if(strchr(data->set.proxyuserpwd, ':'))
- /* a colon means the password was given, even if blank */
- passwdgiven = TRUE;
- }
- else {
- /* no name given, get the password only */
- sscanf(data->set.proxyuserpwd+1, "%127[^\n]", proxypasswd);
- passwdgiven = TRUE;
- }
- /* check for password, if no ask for one */
- if( !proxypasswd[0] && !passwdgiven) {
- if(data->set.fpasswd( data->set.passwd_client,
- "proxy password:",
- proxypasswd,
- sizeof(proxypasswd))) {
- failf(data, "Bad password from password callback");
- return CURLE_BAD_PASSWORD_ENTERED;
- }
- }
+ sscanf(data->set.proxyuserpwd, "%127[^:]:%127[^\n]",
+ proxyuser, proxypasswd);
conn->proxyuser = strdup(proxyuser);
if(!conn->proxyuser)
@@ -2728,7 +2666,6 @@ static CURLcode CreateConnection(struct SessionHandle *data,
user[0] =0; /* to make everything well-defined */
passwd[0]=0;
- passwdgiven = FALSE; /* none given so far */
if (conn->protocol & (PROT_FTP|PROT_HTTP)) {
/* This is a FTP or HTTP URL, we will now try to extract the possible
@@ -2777,9 +2714,6 @@ static CURLcode CreateConnection(struct SessionHandle *data,
strcpy(passwd, newpasswd);
}
free(newpasswd);
-
- /* we have set the password */
- passwdgiven = TRUE;
}
}
}
@@ -2795,47 +2729,24 @@ static CURLcode CreateConnection(struct SessionHandle *data,
* so it doesn't have to be set in this block
*/
if (data->set.userpwd != NULL) {
- if(*data->set.userpwd != ':') {
- /* the name is given, get user+password */
- sscanf(data->set.userpwd, "%127[^:]:%127[^\n]",
- user, passwd);
- if(strchr(data->set.userpwd, ':'))
- /* a colon means the password was given, even if blank */
- passwdgiven = TRUE;
- }
- else
- /* no name given, starts with a colon, get the password only */
- sscanf(data->set.userpwd+1, "%127[^\n]", passwd);
+ /* the name is given, get user+password */
+ sscanf(data->set.userpwd, "%127[^:]:%127[^\n]",
+ user, passwd);
}
- if ((data->set.use_netrc != CURL_NETRC_IGNORED) &&
- !passwdgiven) { /* need passwd */
+ if (data->set.use_netrc != CURL_NETRC_IGNORED) {
if(Curl_parsenetrc(conn->hostname,
- user,
- passwd)) {
+ user, passwd)) {
infof(data, "Couldn't find host %s in the .netrc file, using defaults",
conn->hostname);
}
- else {
+ else
conn->bits.user_passwd = 1; /* enable user+password */
- passwdgiven = TRUE;
- }
- }
-
- /* if we have a user but no password, ask for one */
- if(conn->bits.user_passwd && !passwdgiven ) {
- if(data->set.fpasswd(data->set.passwd_client,
- "password:", passwd,
- sizeof(passwd)))
- return CURLE_BAD_PASSWORD_ENTERED;
}
- /* So we could have a password but no user; that's just too bad. */
-
/* If our protocol needs a password and we have none, use the defaults */
if ( (conn->protocol & (PROT_FTP|PROT_HTTP)) &&
- !conn->bits.user_passwd &&
- !passwdgiven) {
+ !conn->bits.user_passwd) {
strcpy(user, CURL_DEFAULT_USER);
strcpy(passwd, CURL_DEFAULT_PASSWORD);