From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 86930 invoked by alias); 22 Sep 2017 19:09:14 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 86921 invoked by uid 89); 22 Sep 2017 19:09:13 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=fancier, Hx-languages-length:2073 X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 22 Sep 2017 19:09:12 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dvTK2-0005fD-4b for gdb-patches@sourceware.org; Fri, 22 Sep 2017 15:09:11 -0400 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:46004) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dvTJt-0005bY-W3; Fri, 22 Sep 2017 15:09:02 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4873 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1dvTJt-00046g-7T; Fri, 22 Sep 2017 15:09:01 -0400 Date: Fri, 22 Sep 2017 19:09:00 -0000 Message-Id: <837ewqczzs.fsf@gnu.org> From: Eli Zaretskii To: Sergio Durigan Junior CC: gdb-patches@sourceware.org, palves@redhat.com In-reply-to: <87bmm21sig.fsf@redhat.com> (message from Sergio Durigan Junior on Fri, 22 Sep 2017 14:45:59 -0400) Subject: Re: [PATCH v3 5/5] Extend "set cwd" to work on gdbserver Reply-to: Eli Zaretskii References: <20170912042325.14927-1-sergiodj@redhat.com> <20170921225926.23132-1-sergiodj@redhat.com> <20170921225926.23132-6-sergiodj@redhat.com> <83o9q3cftp.fsf@gnu.org> <87bmm21sig.fsf@redhat.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-IsSubscribed: yes X-SW-Source: 2017-09/txt/msg00694.txt.bz2 > From: Sergio Durigan Junior > Cc: gdb-patches@sourceware.org, palves@redhat.com > Date: Fri, 22 Sep 2017 14:45:59 -0400 > > >> + if (inferior_cwd != NULL) > >> + { > >> + size_t cwdlen = strlen (inferior_cwd); > >> + > >> + wcwd = alloca ((cwdlen + 1) * sizeof (wchar_t)); > >> + mbstowcs (wcwd, inferior_cwd, cwdlen + 1); > >> + } > > > > no error checking of the mbstowcs conversion? > > Sorry, I am not a Windows programmer. Other places in the code also > don't check for errors. Not checking for errors in these conversions can be worse on Windows than on other platforms, because the Windows' wchar_t supports only the BMP, so the chances of getting a conversion error are higher than on Unix. > I'd be happy to improve this code, but I refuse to touch a Windows > machine so I'm doing this all this without any testing. But please, > feel absolutely free to point out how this code should look like. mbstowcs returns NULL if it fails, so I suggest to throw an error in that case. I see no reason for anything fancier. > >> +static void > >> +extended_remote_set_inferior_cwd (struct remote_state *rs) > >> +{ > >> + if (packet_support (PACKET_QSetWorkingDir) != PACKET_DISABLE) > >> + { > >> + const char *inferior_cwd = get_inferior_cwd (); > >> + > >> + if (inferior_cwd != NULL) > >> + { > >> + std::string hexpath = bin2hex ((const gdb_byte *) inferior_cwd, > >> + strlen (inferior_cwd)); > >> + > > > > Shouldn't this do some encoding conversion, from the GDB charset to > > the target charset, before encoding in hex? > > I don't know. There's nothing related to charset on gdb/gdbserver/, but > then again I don't know if we've ever encountered a case that demanded > conversions. I can investigate this a bit more. GDB does know about target-charset and host-charset. I'd expect file names that are sent to the target be in the target charset, but since what get_inferior_cwd returns is in host charset (it was typed by the user), I think a conversion might be in order.