Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #111835

Re: How to determine if file is binary or text?

From DFS <nospam@dfs.com>
Newsgroups comp.lang.c
Subject Re: How to determine if file is binary or text?
Date 2017-06-08 12:37 -0400
Organization A noiseless patient Spider
Message-ID <ohbubu$o3e$3@dont-email.me> (permalink)
References (7 earlier) <6638cc40-dd84-4f1a-a60f-5860a172f4a8@googlegroups.com> <ohbips$e1a$2@dont-email.me> <slrn3vfsojineq.iqv.ike@iceland.freeshell.org> <ohbsja$h8u$2@dont-email.me> <yJe_A.25216$yi6.19571@fx18.iad>

Show all headers | View raw


On 6/8/2017 12:14 PM, Scott Lurndal wrote:
> DFS <nospam@dfs.com> writes:
>> On 6/8/2017 10:19 AM, Ike Naar wrote:
>>> On 2017-06-08, DFS <nospam@dfs.com> wrote:
>>>> int is_textfile(char *fname)
>>>> {
>>>> 	//run the GNUWin32 file command
>>>> 	char psBuffer[128];
>>>> 	FILE *pPipe;
>>>>
>>>> 	char cmd[] = {0};
>>>
>>> The array 'cmd' is only 1 byte long.
>>>
>>>> 	sprintf(cmd,"file %s",fname);
>>>
>>> Yet you try to store (strlen("file ") + strlen(fname) + 1) bytes into it.
>>> That won't fit.
>>
>>
>> It works fine.
> 
> No, it doesn't.  It corrupts the stack.
> 
>>
>> printf("%s\n",cmd) prints 'file filename', and _popen executes it no
>> problem.
> 
> You just don't see the corruption _in this particular case_.  If the
> stack grew in the other direction (which it does on some processors),
> or if you had declared anything after cmd, you would likely have wiped
> out that data or the return address on the stack.
> 
> You should _NEVER_ use sprintf.  Instead, use snprintf - e.g.
> 
> #define MAXIMUM_COMMAND_LENGTH 512
> 
>    char cmd[MAXIMUM_COMMAND_LENGTH];
> 
>    snprintf(cmd, sizeof(cmd), "file %s", file);
> 
>    And check the return code from snprintf to make sure you
> didn't get truncated output because sizeof(cmd) is less than
> the space required for the given format specifier plus
> argument(s).


Thanks.  I just approximated your example and it works fine.


Test:

char cmd[5];
if ((snprintf(cmd,sizeof(cmd),"file %s",fname)) == -1)
{printf("max cmd length insufficient\n");}

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-07 14:40 -0400
  Re: How to determine if file is binary or text? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-07 20:46 +0200
  Re: How to determine if file is binary or text? bartc <bc@freeuk.com> - 2017-06-07 19:58 +0100
  Re: How to determine if file is binary or text? scott@slp53.sl.home (Scott Lurndal) - 2017-06-07 19:05 +0000
  Re: How to determine if file is binary or text? supercat@casperkitty.com - 2017-06-07 12:10 -0700
  Re: How to determine if file is binary or text? "James R. Kuyper" <jameskuyper@verizon.net> - 2017-06-07 16:25 -0400
  Re: How to determine if file is binary or text? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2017-06-07 21:44 +0000
    Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-07 18:14 -0400
      Re: How to determine if file is binary or text? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-08 00:23 +0200
        Re: How to determine if file is binary or text? Robert Wessel <robertwessel2@yahoo.com> - 2017-06-08 00:11 -0500
          Re: How to determine if file is binary or text? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-08 15:14 +0200
            Re: How to determine if file is binary or text? Robert Wessel <robertwessel2@yahoo.com> - 2017-06-08 11:06 -0500
          Re: How to determine if file is binary or text? raltbos@xs4all.nl (Richard Bos) - 2017-06-17 18:28 +0000
      Re: How to determine if file is binary or text? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-06-07 23:30 +0100
        Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-07 20:26 -0400
          Re: How to determine if file is binary or text? bartc <bc@freeuk.com> - 2017-06-08 01:30 +0100
            Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-07 23:50 -0400
              Re: How to determine if file is binary or text? mark.bluemel@gmail.com - 2017-06-08 02:13 -0700
                Re: How to determine if file is binary or text? mark.bluemel@gmail.com - 2017-06-08 04:05 -0700
                Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-08 09:21 -0400
                Re: How to determine if file is binary or text? Ike Naar <ike@iceland.freeshell.org> - 2017-06-08 14:19 +0000
                Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-08 12:07 -0400
                Re: How to determine if file is binary or text? scott@slp53.sl.home (Scott Lurndal) - 2017-06-08 16:14 +0000
                Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-08 12:37 -0400
                Re: How to determine if file is binary or text? scott@slp53.sl.home (Scott Lurndal) - 2017-06-08 16:54 +0000
                Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-08 13:14 -0400
                An old version of what??? (Was: How to determine if file is binary or text?) gazelle@shell.xmission.com (Kenny McCormack) - 2017-06-09 17:13 +0000
              Re: How to determine if file is binary or text? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-06-08 11:15 +0100
          Re: How to determine if file is binary or text? scott@slp53.sl.home (Scott Lurndal) - 2017-06-08 12:49 +0000
          Re: How to determine if file is binary or text? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2017-06-08 14:01 +0000
          Re: How to determine if file is binary or text? Michael Forsythe <forsythe@example.com> - 2017-06-08 15:33 +0000
            Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-08 18:43 -0400
              Re: How to determine if file is binary or text? jak <please@nospam.tnx> - 2017-06-09 08:46 +0200
      Re: How to determine if file is binary or text? "James R. Kuyper" <jameskuyper@verizon.net> - 2017-06-07 19:23 -0400
      Re: How to determine if file is binary or text? Barry Schwarz <schwarzb@dqel.com> - 2017-06-07 16:50 -0700
      Re: How to determine if file is binary or text? "Pascal J. Bourguignon" <pjb@informatimago.com> - 2017-06-08 15:51 +0200
  Re: How to determine if file is binary or text? Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2017-06-07 17:17 -0600
    Re: How to determine if file is binary or text? Keith Thompson <kst-u@mib.org> - 2017-06-07 19:21 -0700
      Re: How to determine if file is binary or text? Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2017-06-07 21:37 -0600
  Re: How to determine if file is binary or text? Noob <root@127.0.0.1> - 2017-06-08 08:40 +0200
  Re: How to determine if file is binary or text? gordonb.t9rom@burditt.org (Gordon Burditt) - 2017-06-08 12:03 -0500

csiph-web