git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Andreas Schwab <schwab@linux-m68k.org>
Cc: Ben Walton <bwalton@artsci.utoronto.ca>,
	Junio C Hamano <gitster@pobox.com>, git <git@vger.kernel.org>,
	Tay Ray Chuan <rctay89@gmail.com>
Subject: Re: [PATCH] Avoid crippled getpass function on Solaris
Date: Mon, 6 Aug 2012 20:35:41 -0400	[thread overview]
Message-ID: <20120807003541.GA18219@sigill.intra.peff.net> (raw)
In-Reply-To: <20120807002318.GA17498@sigill.intra.peff.net>

On Mon, Aug 06, 2012 at 08:23:18PM -0400, Jeff King wrote:

> This is all moot if we end up ripping stdio out of this code for other
> reasons, but it does give us another option for a fix.

And here is what that patch would look like:

-- >8 --
Subject: [PATCH] terminal: seek when switching between reading and writing

When a stdio stream is opened in update mode (e.g., "w+"),
the C standard forbids switching between reading or writing
without an intervening positioning function. Many
implementations are lenient about this, but Solaris libc
will flush the recently-read contents to the output buffer.
In this instance, that meant writing the non-echoed password
that the user just typed to the terminal.

Fix it by inserting a no-op fseek between the read and
write.

The opposite direction (writing immediately followed by
reading) is also disallowed, but our fflush immediately
after printing the prompt is sufficient to satisfy the
standard.
---
 compat/terminal.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/compat/terminal.c b/compat/terminal.c
index 6d16c8f..bbb038d 100644
--- a/compat/terminal.c
+++ b/compat/terminal.c
@@ -59,6 +59,7 @@ char *git_terminal_prompt(const char *prompt, int echo)
 
 	r = strbuf_getline(&buf, fh, '\n');
 	if (!echo) {
+		fseek(fh, SEEK_CUR, 0);
 		putc('\n', fh);
 		fflush(fh);
 	}

  reply	other threads:[~2012-08-07  0:36 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-05 23:17 [PATCH] Avoid crippled getpass function on Solaris Ben Walton
2012-08-06  1:56 ` Tay Ray Chuan
2012-08-06  2:41   ` Ben Walton
2012-08-06  1:59 ` Junio C Hamano
2012-08-06  2:35   ` Ben Walton
2012-08-06 19:39     ` Jeff King
2012-08-06 19:57       ` Junio C Hamano
2012-08-06 21:31       ` Ben Walton
2012-08-06 21:34         ` Jeff King
2012-08-06 22:09           ` Ben Walton
2012-08-06 22:31             ` Jeff King
2012-08-06 22:39               ` Ben Walton
2012-08-06 22:42                 ` Jeff King
2012-08-06 23:31                   ` Ben Walton
2012-08-07  0:01                     ` Jeff King
2012-08-06 23:05               ` Andreas Schwab
2012-08-07  0:23                 ` Jeff King
2012-08-07  0:35                   ` Jeff King [this message]
2012-08-07  2:18                     ` Tay Ray Chuan
2012-08-07  3:01                     ` Ben Walton
2012-08-07  3:07                     ` [PATCH] Enable HAVE_DEV_TTY for Solaris Ben Walton
2012-08-07  3:43                       ` Junio C Hamano
2012-08-07  4:03                         ` Jeff King
2012-08-07  4:10                           ` Jeff King
2012-08-07 15:31                             ` Ben Walton
2012-08-08 14:13                             ` Erik Faye-Lund
2012-08-08 21:05                               ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120807003541.GA18219@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=bwalton@artsci.utoronto.ca \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=rctay89@gmail.com \
    --cc=schwab@linux-m68k.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).