aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFumitoshi UKAI <ukai@debian.or.jp>2002-01-30 15:08:48 +0000
committerFumitoshi UKAI <ukai@debian.or.jp>2002-01-30 15:08:48 +0000
commit05af6d32e67e92f4bcc21c337acf66c7eb05a3cd (patch)
tree2859704dfe87fb59093590dab50bc2cc24a1dfee
parent[w3m-dev 02931] use POST in multipart.cgi (diff)
downloadw3m-05af6d32e67e92f4bcc21c337acf66c7eb05a3cd.tar.gz
w3m-05af6d32e67e92f4bcc21c337acf66c7eb05a3cd.zip
[w3m-dev 02933] segmentation fault when w3m -dump https:
* file.c (readHeader): use inputAnswer() * file.c (getAuthCookie): remove term_cbreak() * file.c (checkOverWrite): use inputAnswer() * file.c (inputAnswer): added * istream.c (ssl_get_certificate): use inputAnswer() * main.c (qquitfm): change prompt * proto.h (inputAnswer): added From: Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
Diffstat (limited to '')
-rw-r--r--ChangeLog13
-rw-r--r--file.c51
-rw-r--r--istream.c23
-rw-r--r--main.c6
-rw-r--r--proto.h3
5 files changed, 57 insertions, 39 deletions
diff --git a/ChangeLog b/ChangeLog
index 3008938..b318733 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2002-01-31 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
+
+ * [w3m-dev 02933] segmentation fault when w3m -dump https:
+ * file.c (readHeader): use inputAnswer()
+ * file.c (getAuthCookie): remove term_cbreak()
+ * file.c (checkOverWrite): use inputAnswer()
+ * file.c (inputAnswer): added
+ * istream.c (ssl_get_certificate): use inputAnswer()
+ * main.c (qquitfm): change prompt
+ * proto.h (inputAnswer): added
+
2002-01-30 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
* [w3m-dev 02931] use POST in multipart.cgi
@@ -2410,4 +2421,4 @@
* release-0-2-1
* import w3m-0.2.1
-$Id: ChangeLog,v 1.276 2002/01/30 04:42:38 ukai Exp $
+$Id: ChangeLog,v 1.277 2002/01/30 15:08:48 ukai Exp $
diff --git a/file.c b/file.c
index ae75b6d..4a3b089 100644
--- a/file.c
+++ b/file.c
@@ -1,4 +1,4 @@
-/* $Id: file.c,v 1.50 2002/01/30 04:25:02 ukai Exp $ */
+/* $Id: file.c,v 1.51 2002/01/30 15:08:48 ukai Exp $ */
#include "fm.h"
#include <sys/types.h>
#include "myctype.h"
@@ -731,16 +731,14 @@ readHeader(URLFile *uf, Buffer *newBuf, int thru, ParsedURL *pu)
? "y" : NULL;
if (fmInitialized && (err & COO_OVERRIDE_OK) &&
accept_bad_cookie == ACCEPT_BAD_COOKIE_ASK) {
- Str msg =
- Sprintf
- ("Accept bad cookie from %s for %s? (y or n) ",
- pu->host,
- domain
- && domain->ptr ? domain->ptr : "<localdomain>");
- if (msg->length > COLS - 4)
- Strshrink(msg, msg->length - (COLS - 4));
- term_raw();
- ans = inputChar(msg->ptr);
+ Str msg = Sprintf("Accept bad cookie from %s for %s?",
+ pu->host,
+ ((domain && domain->ptr)
+ ? domain->ptr : "<localdomain>"));
+ if (msg->length > COLS - 10)
+ Strshrink(msg, msg->length - (COLS - 10));
+ Strcat_charp(msg, " (y/n)");
+ ans = inputAnswer(msg->ptr);
}
if (ans == NULL || tolower(*ans) != 'y' ||
(err =
@@ -1222,7 +1220,6 @@ getAuthCookie(struct http_auth *hauth, char *auth_header,
IN_PASSWORD)) == NULL)
return NULL;
pwd = Str_conv_to_system(Strnew_charp(pp));
- term_cbreak();
}
else {
int proxy = !strncasecmp("Proxy-Authorization:", auth_header,
@@ -6393,22 +6390,34 @@ int
checkOverWrite(char *path)
{
struct stat st;
- char buf[2];
- char *ans = NULL;
+ char *ans;
if (stat(path, &st) < 0)
return 0;
+ ans = inputAnswer("File exists. Overwrite? (y/n)");
+ if (ans && tolower(*ans) == 'y')
+ return 0;
+ else
+ return -1;
+}
+
+char *
+inputAnswer(char *prompt)
+{
+ char *ans;
+ char buf[2];
+
if (fmInitialized) {
- ans = inputChar("File exists. Overwrite? (y or n)");
+ term_raw();
+ ans = inputChar(prompt);
}
else {
- printf("File exists. Overwrite? (y or n)");
- ans = fgets(buf, 2, stdin);
+ printf(prompt);
+ fflush(stdout);
+ fgets(buf, 2, stdin);
+ ans = allocStr(buf, 1);
}
- if (ans != NULL && (*ans == '\0' || tolower(*ans) == 'y'))
- return 0;
- else
- return -1;
+ return ans;
}
static void
diff --git a/istream.c b/istream.c
index 7f92b57..0239b5a 100644
--- a/istream.c
+++ b/istream.c
@@ -1,4 +1,4 @@
-/* $Id: istream.c,v 1.11 2002/01/12 13:33:47 ukai Exp $ */
+/* $Id: istream.c,v 1.12 2002/01/30 15:08:48 ukai Exp $ */
#include "fm.h"
#include "istream.h"
#include <signal.h>
@@ -476,11 +476,10 @@ ssl_get_certificate(InputStream stream, char *hostname)
&& strcasecmp(accept_this_site->ptr, hostname) == 0)
ans = "y";
else {
- emsg = Strnew_charp("No SSL peer certificate: accept (y/n)?");
- term_raw();
- ans = inputChar(emsg->ptr);
+ emsg = Strnew_charp("No SSL peer certificate: accept? (y/n)");
+ ans = inputAnswer(emsg->ptr);
}
- if (tolower(*ans) == 'y')
+ if (ans && tolower(*ans) == 'y')
amsg = Strnew_charp
("Accept SSL session without any peer certificate");
else {
@@ -510,11 +509,10 @@ ssl_get_certificate(InputStream stream, char *hostname)
&& strcasecmp(accept_this_site->ptr, hostname) == 0)
ans = "y";
else {
- emsg = Sprintf("%s: accept (y/n)?", em);
- term_raw();
- ans = inputChar(emsg->ptr);
+ emsg = Sprintf("%s: accept? (y/n)", em);
+ ans = inputAnswer(emsg->ptr);
}
- if (tolower(*ans) == 'y') {
+ if (ans && tolower(*ans) == 'y') {
amsg = Sprintf("Accept unsecure SSL session: "
"unverified: %s", em);
}
@@ -537,11 +535,10 @@ ssl_get_certificate(InputStream stream, char *hostname)
Str ep = Strdup(emsg);
if (ep->length > COLS - 16)
Strshrink(ep, ep->length - (COLS - 16));
- term_raw();
- Strcat_charp(ep, ": accept(y/n)?");
- ans = inputChar(ep->ptr);
+ Strcat_charp(ep, ": accept? (y/n)");
+ ans = inputAnswer(ep->ptr);
}
- if (tolower(*ans) == 'y') {
+ if (ans && tolower(*ans) == 'y') {
amsg = Strnew_charp("Accept unsecure SSL session:");
Strcat(amsg, emsg);
}
diff --git a/main.c b/main.c
index 7d1b36d..627d89f 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/* $Id: main.c,v 1.73 2002/01/26 17:24:01 ukai Exp $ */
+/* $Id: main.c,v 1.74 2002/01/30 15:08:48 ukai Exp $ */
#define MAINPROGRAM
#include "fm.h"
#include <signal.h>
@@ -2095,8 +2095,8 @@ qquitfm(void)
char *ans;
if (!confirm_on_quit)
quitfm();
- ans = inputChar("Do you want to exit w3m? (y or n)");
- if (ans != NULL && tolower(*ans) == 'y')
+ ans = inputChar("Do you want to exit w3m? (y/n)");
+ if (ans && tolower(*ans) == 'y')
quitfm();
displayBuffer(Currentbuf, B_NORMAL);
}
diff --git a/proto.h b/proto.h
index f74797d..788c896 100644
--- a/proto.h
+++ b/proto.h
@@ -1,4 +1,4 @@
-/* $Id: proto.h,v 1.30 2002/01/29 19:08:50 ukai Exp $ */
+/* $Id: proto.h,v 1.31 2002/01/30 15:08:48 ukai Exp $ */
/*
* This file was automatically generated by version 1.7 of cextract.
* Manual editing not recommended.
@@ -184,6 +184,7 @@ extern void doFileSave(URLFile uf, char *defstr);
extern int checkCopyFile(char *path1, char *path2);
extern int checkSaveFile(InputStream stream, char *path);
extern int checkOverWrite(char *path);
+extern char *inputAnswer(char *prompt);
extern int matchattr(char *p, char *attr, int len, Str *value);
extern char *checkHeader(Buffer *buf, char *field);
extern Buffer *newBuffer(int width);