Hmm. I stand corrected.
Has StreamDevice done this from the beginning?
I’m pretty sure that I had a buffer overflow somewhere along the way. Could have just been my bad code somewhere else, though.
Thanks for the clarification. Perhaps a note about limiting to NELM could be added to the documentation format converter descriptions?
> On Dec 2, 2019, at 8:41 AM, Zimoch Dirk (PSI) via Tech-talk <[email protected]> wrote:
>
> On Mon, 2019-12-02 at 08:07 -0800, Eric Norum via Core-talk wrote:
>> Others have dealt with the original question, but I’d like to add a followup.
>>
>> Conversion strings like the one shown in the original message are unsafe and should never be used. They can lead to buffer overflows and weird IOC behaviour.
>>
>
> Have you tested that this leads to buffer overflows? I think I automatically limit the format to the buffer size (here
> NELM).
>
> Dirk
>
>> The capacity of the destination buffer should always be specified. Here, from the ASYN streamSCPI template, are the ’short’ and ‘long’ string versions of records to read SCPI identification strings:
>>
>>> record(stringin, "$(P)$(R)IDN")
>>> {
>>> field(DESC, "SCPI identification string")
>>> field(DTYP, "stream")
>>> field(INP, "@dev_NAME_.proto getIDN(39) $(PORT) $(A)")
>>> field(PINI, "YES")
>>> }
>>> record(waveform, "$(P)$(R)IDNwf")
>>> {
>>> field(DESC, "SCPI identification string")
>>> field(DTYP, "stream")
>>> field(INP, "@dev_NAME_.proto getIDN(199) $(PORT) $(A)")
>>> field(PINI, "YES")
>>> field(FTVL, "CHAR")
>>> field(NELM, "200")
>>> }
>>>
>>>
>>> getIDN {
>>> out "*IDN?";
>>> in "%\$1[^\r\n]";
>>> ExtraInput = Ignore;
>>> }
>>
>>
>>> On Nov 29, 2019, at 12:11 PM, dmnr infn via Tech-talk <[email protected]> wrote:
>>>
>>> Hi all,
>>> I have a .db e .proto made in this way:
>>>
>>> .db
>>> record(lsi, "RF:getString")
>>> {
>>> field(DESC, "String more than 40 chars")
>>> field(SIZV, "80")
>>> field(INP, "@MDO.proto getString L0")
>>> field(SCAN, ".2 second")
>>> }
>>>
>>> .proto
>>> getString {
>>> out "STT?";
>>> in "%s";
>>> }
>>>
>>> I want to get a String that is more than 40 characters, and I use a lsi record but I got always 40 chars.
>>> There is something wrong in my code?
>>> Thank you
>>>
>>
>> --
>> Eric Norum
>> [email protected]
>> “Ah, the chance to be pedantic first thing on a Monday morning — what a great way to start the week."
>>
--
Eric Norum
[email protected]
- Replies:
- Re: lsi record for more than 40 characters doesn't work Zimoch Dirk (PSI) via Tech-talk
- References:
- lsi record for more than 40 characters doesn't work dmnr infn via Tech-talk
- Re: lsi record for more than 40 characters doesn't work Eric Norum via Tech-talk
- Re: lsi record for more than 40 characters doesn't work Zimoch Dirk (PSI) via Tech-talk
- Navigate by Date:
- Prev:
Re: lsi record for more than 40 characters doesn't work Zimoch Dirk (PSI) via Tech-talk
- Next:
RE: ADAndor and the Ikon-M Mark Rivers via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: lsi record for more than 40 characters doesn't work Zimoch Dirk (PSI) via Tech-talk
- Next:
Re: lsi record for more than 40 characters doesn't work Zimoch Dirk (PSI) via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024
|