Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #163464
| From | David Brown <david.brown@hesbynett.no> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Automatic strings without malloc |
| Date | 2021-11-18 10:50 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <sn57ku$tea$1@dont-email.me> (permalink) |
| References | (2 earlier) <24d7df90-3564-407a-999f-a33e774897c5n@googlegroups.com> <sn38n4$l8i$1@dont-email.me> <9LblJ.45928$SW5.10995@fx45.iad> <sn3llm$qhj$3@dont-email.me> <pd2h6i-dsm1.ln1@wilbur.25thandClement.com> |
On 18/11/2021 05:46, William Ahern wrote: > David Brown <david.brown@hesbynett.no> wrote: >> On 17/11/2021 19:21, Scott Lurndal wrote: >>> David Brown <david.brown@hesbynett.no> writes: >>>> On 17/11/2021 16:36, Malcolm McLean wrote: >>>>> On Wednesday, 17 November 2021 at 15:34:50 UTC, Scott Lurndal wrote: >>>>>> pozz <pozz...@gmail.com> writes: >>>>>>> Many times I need to construct a string through a call to sprintf and >>>>>>> pass it to an external function. >>>>>>> >>>>>>> char s[32]; >>>>>>> sprintf(s, "Hi %s, today is %d/%d/%d", yourname, day, month, year); >>>>>>> lcd_write(s); >>>>>> One might consider using 'snprintf' instead of 'sprintf'; it is a bit safer. >>>>>> >>>>> It depends whether wrong results are better or worse than no results. >>>>> >>>> >>>> Generally, a truncated string on the output is better than a stack >>>> overflow with your embedded system crashing or going wild. But your >>>> needs may vary. >>> >>> Indeed. Plus a good programmer checks the return value from snprintf. >>> Always. >>> >> >> Really? I never do. But I make sure my buffers are the right size for >> the job - or that it doesn't matter if there is truncation (such as for >> log outputs). I prefer to be sure that my inputs to the function are >> correct, than to call the function and check for problems afterwards. >> (Different people can have different requirements here - but that's the >> way I do it.) >> > > That is generally the best approach, but doesn't work well with snprintf (or > stringification of data types generally), especially in light of the express > concern about robustness to drive-by edits of the format string. > It works perfectly well in the type of programming I do. Different kinds of work have different requirements. In small-systems embedded programming (which is what I usually work with, and also what the OP is doing), you know what you are passing to your printf type functions. You know what the output is connected to (a screen, a UART, a log in flash, etc.). But it can be an entirely different matter in other kinds of programming where you might have the format string coming from an external file of translations made by a third party, or the endless variety of complicating factors that can occur on big systems. Scott could be right that a good programmer always checks the return value of snprintf when doing the kind of coding he does - but it is not right for the kind of coding /I/ do. > The way to avoid string buffer errors is to avoid strings and stick to > concrete data types or to process data in a rigorously streaming fashion. The way to avoid string buffer errors is the same as you avoid any other errors - good development practices. That runs the whole gamut from high level concerns to low-level details. It includes making sure you have clear specifications for the code you are writing, making sure the programmer is appropriately qualified, having code review practices, testing regimes, automatic checking tools, making sure the data coming into your code is appropriate, making sure you correctly handle all cases (including worst cases and pathological cases), and so on. It's just like any other coding error.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Automatic strings without malloc pozz <pozzugno@gmail.com> - 2021-11-17 11:36 +0100
Re: Automatic strings without malloc pozz <pozzugno@gmail.com> - 2021-11-17 11:38 +0100
Re: Automatic strings without malloc Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-11-17 03:00 -0800
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-17 12:04 +0100
Re: Automatic strings without malloc Manfred <noname@add.invalid> - 2021-11-17 18:19 +0100
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-17 20:34 +0100
Re: Automatic strings without malloc pozz <pozzugno@gmail.com> - 2021-11-18 10:07 +0100
Re: Automatic strings without malloc Thiago Adams <thiago.adams@gmail.com> - 2021-11-17 05:11 -0800
Re: Automatic strings without malloc Philipp Klaus Krause <pkk@spth.de> - 2021-11-18 15:29 +0100
Re: Automatic strings without malloc Bart <bc@freeuk.com> - 2021-11-17 13:47 +0000
Re: Automatic strings without malloc scott@slp53.sl.home (Scott Lurndal) - 2021-11-17 15:34 +0000
Re: Automatic strings without malloc Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-11-17 07:36 -0800
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-17 16:56 +0100
Re: Automatic strings without malloc scott@slp53.sl.home (Scott Lurndal) - 2021-11-17 18:21 +0000
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-17 20:37 +0100
Re: Automatic strings without malloc scott@slp53.sl.home (Scott Lurndal) - 2021-11-17 21:35 +0000
Re: Automatic strings without malloc Thiago Adams <thiago.adams@gmail.com> - 2021-11-19 05:38 -0800
Re: Automatic strings without malloc Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-11-19 07:13 -0800
Re: Automatic strings without malloc William Ahern <william@25thandClement.com> - 2021-11-17 20:46 -0800
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-18 10:50 +0100
Re: Automatic strings without malloc Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-11-18 03:56 -0800
Re: Automatic strings without malloc Thiago Adams <thiago.adams@gmail.com> - 2021-11-18 05:54 -0800
Re: Automatic strings without malloc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-11-18 16:38 +0000
Re: Automatic strings without malloc Thiago Adams <thiago.adams@gmail.com> - 2021-11-18 10:52 -0800
Re: Automatic strings without malloc Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-11-18 11:27 -0800
Re: Automatic strings without malloc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-11-18 20:41 +0000
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-18 16:05 +0100
Re: Automatic strings without malloc Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-11-17 11:22 -0800
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-17 20:39 +0100
Re: Automatic strings without malloc Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-11-17 15:18 -0800
[OT] Generally... [Was: Automatic strings without malloc] Jeremy Brubaker <jbrubake@orionarts.invalid> - 2021-11-18 17:46 +0000
Re: [OT] Generally... [Was: Automatic strings without malloc] Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-11-18 11:21 -0800
Re: Automatic strings without malloc Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-11-17 11:14 -0800
Re: Automatic strings without malloc pozz <pozzugno@gmail.com> - 2021-11-18 10:08 +0100
Re: Automatic strings without malloc Siri Cruise <chine.bleu@yahoo.com> - 2021-11-18 12:25 -0800
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-18 23:19 +0100
Re: Automatic strings without malloc Siri Cruise <chine.bleu@yahoo.com> - 2021-11-18 17:22 -0800
Re: Automatic strings without malloc Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-11-19 01:46 -0800
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-19 17:29 +0100
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-19 17:26 +0100
Re: Automatic strings without malloc Siri Cruise <chine.bleu@yahoo.com> - 2021-11-19 09:00 -0800
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-19 18:25 +0100
Re: Automatic strings without malloc "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2021-11-19 14:58 -0800
Re: Automatic strings without malloc Guillaume <message@bottle.org> - 2021-11-19 19:37 +0100
Re: Automatic strings without malloc "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2021-11-19 12:34 -0800
Re: Automatic strings without malloc Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-11-19 13:44 -0800
Re: Automatic strings without malloc David Brown <david.brown@hesbynett.no> - 2021-11-20 13:30 +0100
Re: Automatic strings without malloc luser droog <luser.droog@gmail.com> - 2021-11-20 20:49 -0800
csiph-web