[asterisk-bugs] [JIRA] (ASTERISK-25761) USAN: Potential runtime errors causing undefined behavior
Corey Farrell (JIRA)
noreply at issues.asterisk.org
Fri Feb 12 13:01:32 CST 2016
[ https://issues.asterisk.org/jira/browse/ASTERISK-25761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=229468#comment-229468 ]
Corey Farrell commented on ASTERISK-25761:
------------------------------------------
I've commented on each of the findings.
I think these should be ignored, the hash functions are not actually undefined,
{quote}
/root/asterisk-13.7.0/include/asterisk/strings.h 1181 15 runtime error signed integer overflow 193410279 * 33 cannot be represented in type 'int'
/root/asterisk-13.7.0/include/asterisk/strings.h 1221 15 runtime error signed integer overflow 193404514 * 33 cannot be represented in type 'int'
{quote}
These should have slight modification to the code. Instead of {{(1 << 31)}} it should say {{(1U << 31)}} for chan_sip flags, {{(1ULL << 31)}} for chan_iax flags.
{quote}
chan_iax2.c 13511 2 runtime error left shift of 1 by 31 places cannot be represented in type 'int'
chan_sip.c 8724 2 runtime error left shift of 1 by 31 places cannot be represented in type 'int'
chan_sip.c 8725 2 runtime error left shift of 3 by 30 places cannot be represented in type 'int'
chan_sip.c 29976 3 runtime error left shift of 1 by 31 places cannot be represented in type 'int'
chan_sip.c 29977 3 runtime error left shift of 1 by 31 places cannot be represented in type 'int'
chan_sip.c 30304 2 runtime error left shift of 1 by 31 places cannot be represented in type 'int'
chan_sip.c 30305 2 runtime error left shift of 3 by 30 places cannot be represented in type 'int'
{quote}
This looks like an actual bug. The header contains {{#define EDIT_DISABLED 1<<2}}, then the source uses {{el->el_flags &= ~EDIT_DISABLED;}}. This source becomes {{el->el_flags &= (~1)<<2;}}. Is this an issue on the real editline library? If so a ticket should be opened upstream (and maybe with the major distros).
{quote}
el.c 244 21 runtime error left shift of negative value -2
{quote}
These each require a backtrace to troubleshoot.
{quote}
format_cap.c 173 7 runtime error null pointer passed as argument 2, which is declared to never be null
stasis_message_router.c 113 8 runtime error null pointer passed as argument 2, which is declared to never be null
stasis.c 913 8 runtime error null pointer passed as argument 2, which is declared to never be null
{quote}
The following are codecs. I'm not sure if these are coding error's, if they should be unsigned variables instead of signed, or if they are intentionally taking advantage of the behavior. Can the "left shift of negative value" warning be suppressed for everything within the codecs folder?
{quote}
codec_adpcm.c 151 23 runtime error left shift of negative value -4
codec_g726.c 621 25 runtime error left shift of negative value -12
codec_g726.c 678 25 runtime error left shift of negative value -12
g722/g722_decode.c 80 39 runtime error left shift of negative value -192
g722/g722_decode.c 373 49 runtime error left shift of negative value -1
g722/g722_encode.c 80 39 runtime error left shift of negative value -1
src/lpc.c 156 28 runtime error left shift of negative value -2961983
src/lpc.c 235 42 runtime error left shift of negative value -3457934
src/preprocess.c 92 8 runtime error left shift of negative value -4
src/rpe.c 336 16 runtime error left shift of negative value -4
src/rpe.c 380 8 runtime error left shift of negative value -1
src/short_term.c 64 2 runtime error left shift of negative value -18
src/short_term.c 67 2 runtime error left shift of negative value -2560
src/short_term.c 70 2 runtime error left shift of negative value -1792
src/short_term.c 71 2 runtime error left shift of negative value -341
src/short_term.c 72 2 runtime error left shift of negative value -1
{quote}
Well {{~0L}} does equal -1. I'm not sure if this is a problem, or how we would fix/suppress this warning. I'm also unsure if/how this would cause incorrect behavior.
{quote}
stdtime/localtime.c 828 20 runtime error left shift of negative value -1
{quote}
> USAN: Potential runtime errors causing undefined behavior
> ---------------------------------------------------------
>
> Key: ASTERISK-25761
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-25761
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Affects Versions: 13.7.0
> Environment: gcc version 5.2.1 20150902 (Red Hat 5.2.1-2) (GCC)
> Reporter: Badalian Vyacheslav
> Severity: Minor
>
> Hello!
> I send you a list of the errors found. Usan test. All errors are shown at the time of loading of modules. I hope you would be interested :)
> {code}
> /root/asterisk-13.7.0/include/asterisk/strings.h 1181 15 runtime error signed integer overflow 193410279 * 33 cannot be represented in type 'int'
> /root/asterisk-13.7.0/include/asterisk/strings.h 1221 15 runtime error signed integer overflow 193404514 * 33 cannot be represented in type 'int'
> chan_iax2.c 13511 2 runtime error left shift of 1 by 31 places cannot be represented in type 'int'
> chan_sip.c 8724 2 runtime error left shift of 1 by 31 places cannot be represented in type 'int'
> chan_sip.c 8725 2 runtime error left shift of 3 by 30 places cannot be represented in type 'int'
> chan_sip.c 29976 3 runtime error left shift of 1 by 31 places cannot be represented in type 'int'
> chan_sip.c 29977 3 runtime error left shift of 1 by 31 places cannot be represented in type 'int'
> chan_sip.c 30304 2 runtime error left shift of 1 by 31 places cannot be represented in type 'int'
> chan_sip.c 30305 2 runtime error left shift of 3 by 30 places cannot be represented in type 'int'
> codec_adpcm.c 151 23 runtime error left shift of negative value -4
> codec_g726.c 621 25 runtime error left shift of negative value -12
> codec_g726.c 678 25 runtime error left shift of negative value -12
> el.c 244 21 runtime error left shift of negative value -2
> format_cap.c 173 7 runtime error null pointer passed as argument 2, which is declared to never be null
> g722/g722_decode.c 80 39 runtime error left shift of negative value -192
> g722/g722_decode.c 373 49 runtime error left shift of negative value -1
> g722/g722_encode.c 80 39 runtime error left shift of negative value -1
> src/lpc.c 156 28 runtime error left shift of negative value -2961983
> src/lpc.c 235 42 runtime error left shift of negative value -3457934
> src/preprocess.c 92 8 runtime error left shift of negative value -4
> src/rpe.c 336 16 runtime error left shift of negative value -4
> src/rpe.c 380 8 runtime error left shift of negative value -1
> src/short_term.c 64 2 runtime error left shift of negative value -18
> src/short_term.c 67 2 runtime error left shift of negative value -2560
> src/short_term.c 70 2 runtime error left shift of negative value -1792
> src/short_term.c 71 2 runtime error left shift of negative value -341
> src/short_term.c 72 2 runtime error left shift of negative value -1
> stasis_message_router.c 113 8 runtime error null pointer passed as argument 2, which is declared to never be null
> stasis.c 913 8 runtime error null pointer passed as argument 2, which is declared to never be null
> stdtime/localtime.c 828 20 runtime error left shift of negative value -1
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list