
рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдВред :) рдЖрдЬ, рд╣рдорд╛рд░реА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ, рдирдИ рдЕрдиреБрд╕рдВрдзрд╛рди рд╕рд╛рдордЧреНрд░реА .NET рдХреЗ рд▓рд┐рдП AWS SDK рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИред рдПрдХ рд╕рдордп рдореЗрдВ, рд╣рдордиреЗ C ++ рдХреЗ рд▓рд┐рдП AWS SDK рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ред рддрдм рдХреБрдЫ рдЦрд╛рд╕ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рдерд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрд╕рдбреАрдХреЗ рдХрд╛ .NET рд╕рдВрд╕реНрдХрд░рдг рд╣рдореЗрдВ рдХреИрд╕реЗ рдкреНрд░рд╕рдиреНрди рдХрд░реЗрдЧрд╛ред рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдореМрдХрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рджреБрдирд┐рдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдкрд░рд┐рдкреВрд░реНрдг рдмрдирд╛рддрд╛ рд╣реИред
Amazon Web Services (AWS) .NET SDK рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓рдХрд┐рдЯ рд╣реИ рдЬрд┐рд╕реЗ AWS рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ .NET- рдЖрдзрд╛рд░рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред SDK рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди AWS рд╕реЗрд╡рд╛рдУрдВ рдЬреИрд╕реЗ Amazon S3, Amazon EC2, DynamoDB, рдФрд░ рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП .NET API рд╕реБрдЗрдЯреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред SDK рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб
GitHub рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╣реИ ред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдПрдХ рд╕рдордп рдореЗрдВ рд╣рдордиреЗ C ++ рдХреЗ рд▓рд┐рдП AWS SDK рдХреА рдЬрд╛рдБрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ред рд▓реЗрдЦ рдЫреЛрдЯрд╛ рд╣реЛ рдЧрдпрд╛ - рдХреЛрдб рдХреА 512 рд╣рдЬрд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдереАрдВред рдЗрд╕ рдмрд╛рд░ рд╣рдо рдХреЛрдб рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ 34 рд╣рдЬрд╛рд░ рд╕реАрдПрд╕-рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ (рдЦрд╛рд▓реА рдЫреЛрдбрд╝рдХрд░) рдПрдХ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА 5 рдорд┐рд▓рд┐рдпрди рд╣реИред рдХреЛрдб рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ (664 рд╕реАрдПрд╕-рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ 200 рд╣рдЬрд╛рд░ рд▓рд╛рдЗрдиреЗрдВ) рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдЧрд┐рд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдпрджрд┐ рдПрд╕рдбреАрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ .NET рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд▓рдЧрднрдЧ C ++ рдХреА рддрд░рд╣ рд╣реА рд╣реИ (рдкреНрд░рддрд┐ 512 KLOC рдореЗрдВ рджреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ), рддреЛ рд╣рдореЗрдВ рд▓рдЧрднрдЧ 10 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдмрд╣реБрдд рд╣реА рдЧрд▓рдд рдЧрдгрдирд╛ рдкрджреНрдзрддрд┐ рд╣реИ рдЬреЛ рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдХрдИ рдЕрдиреНрдп рдХрд╛рд░рдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкрд╛рдардХ рдЕрдм рдЙрдмрд╛рдК рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рдлрдВрд╕рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рд╕реАрдзреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдВрд╕реНрдХрд░рдг 6.27 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ .NET рдХреЛрдб рдХреЗ рд▓рд┐рдП AWS SDK рдореЗрдВ рд▓рдЧрднрдЧ 40 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдЬреЛ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рдереЗред рдпрд╣ рди рдХреЗрд╡рд▓ рдПрд╕рдбреАрдХреЗ рдХреЛрдб рдХреА рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ (рдкреНрд░рддрд┐ 512 рдХреЗрдПрд▓рдУрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 4 рддреНрд░реБрдЯрд┐рдпреЛрдВ) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реА ++ рдХреЗ рд╕рд╛рде рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕реА # рдХрд╛рдо рдХреА рддреБрд▓рдиреАрдп рдЧреБрдгрд╡рддреНрддрд╛ рднреА рд╣реИред рдорд╣рд╛рди рдкрд░рд┐рдгрд╛рдо!
.NET рдХреЗ рд▓рд┐рдП AWS SDK рдХреЗ рд▓реЗрдЦрдХ рдорд╣рд╛рди рд╣реИрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рддрдХ, рд╡реЗ рдЕрджреНрднреБрдд рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдиреНрдп рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдпрджрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ 5 рдХреЛрдкреНрдкреЗрдХ рдирд╣реАрдВ рдбрд╛рд▓реЗ рд╣реИрдВред :) рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЕрдореЗрдЬрд╝реЕрди рд▓рдореНрдмрд░рдмрд░реНрдб рдЯреАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рдбрд┐рд╡реАрдЬрдиреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рдХрдВрдкрдиреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ .NET рдЯреАрдо рдХреЗ рд▓рд┐рдП AWS рдПрд╕рдбреАрдХреЗ рдиреЗ рдХрднреА рднреА рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╕реБрдирд╛ред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрд╕рдбреАрдХреЗ рдХреЛрдб рдореЗрдВ рдореБрдЭреЗ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЯреАрдо, рдиреНрдпреВрдирддрдо рдкрд░, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдХ
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ ред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдЬрд╛рдВрдЪ рдХреЛ
рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ :)ред
рдирддреАрдЬрддрди, рдореИрдВ рдЕрднреА рднреА рдПрд╕рдбреАрдХреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░, рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред
рддрд░реНрдХ рдореЗрдВ рддреНрд░реБрдЯрд┐PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3008 [CWE-563] 'this.linker.s3.region' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 116, 114. AWSSDK.DynamoDBv2.Net45 S3Link.cs 116
public string Region { get { .... } set { if (String.IsNullOrEmpty(value)) { this.linker.s3.region = "us-east-1"; } this.linker.s3.region = value; } }
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЙрд╕реА рдЪрд░ рдХреЗ рдорд╛рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИред рдХреЛрдб рд╕реЗ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рддрд░реНрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ:
this.linker.s3.region рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛
рдорд╛рди рд╣рдореЗрд╢рд╛
рдорд╛рди рдХреЗ рдмрд░рд╛рдмрд░
рд╣реЛрдЧрд╛ , рдЪрд╛рд╣реЗ
рдХреЛрдИ рднреА рд╕реНрдерд┐рддрд┐ рд╣реЛ
(String.IsNullnrEmpty (рдорд╛рди)) ред
рдЕрдЧрд░ рдмреНрд▓реЙрдХ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ,
рд╡рд╛рдкрд╕ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреЛрдб рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рддрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
public string Region { get { .... } set { if (String.IsNullOrEmpty(value)) { this.linker.s3.region = "us-east-1"; return; } this.linker.s3.region = value; } }
рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3110 [CWE-674] 'OnFailure' рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ред AWSSDK.ElasticMapReduce.Net45 ResizeJobFlowStep.cs 171
OnFailure? onFailure = null; public OnFailure? OnFailure { get { return this.OnFailure; }
рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЯрд╛рдЗрдкреЛ рдЙрджрд╛рд╣рд░рдг рдЬреЛ
рдСрдирдлрд╝реЗрд▓реНрдпреЛрд░ рдкреНрд░реЙрдкрд░реНрдЯреА
рдХреЗ рдПрдХреНрд╕реЗрд╕ рдПрдХреНрд╕реЗрд╕рд░ рдореЗрдВ рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп,
OnFailure рдХрд╛ рдЕрд░реНрде
OnFailure рд╕рдВрдкрддреНрддрд┐ рд╣реИред рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк:
public OnFailure? OnFailure { get { return this.onFailure; } set { this.onFailure = value; } }
рдЖрдк рдкреВрдЫрддреЗ рд╣реИрдВ: "рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?" рдЕрдм рддрдХ, рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВред рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕реНрдерд╛рдпреА рд╣реИред рдПрдХ рдмрд┐рдВрджреБ рдкрд░, рдХреЛрдИ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдРрд╕реЗ рдЯрд╛рдЗрдкреЛрд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
рдЗрд╕ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдПрдХ рдФрд░ рдиреЛрдЯ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ
рдСрдирдлрд╝реЗрд▓рд┐рдпрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рд╕рдВрдХрд▓рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рдХрд╛рдлреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдХреА рдорд╛рдирд╡ рдзрд╛рд░рдгрд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИред
рдЗрд╕реА рддрд░рд╣ рдХреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐:
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3110 [CWE-674] 'SSES3' рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ред AWSSDK.S3.Net45 InventoryEnc рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди.cs 37
private SSES3 sSES3; public SSES3 SSES3 { get { return this.SSES3; } set { this.SSES3 = value; } }
рд╕реНрдерд┐рддрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреЗ рд╕рдорд╛рди рд╣реИред рдХреЗрд╡рд▓ рдпрд╣рд╛рдБ, рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рджреЛрдиреЛрдВ рдХреЗ
рд▓рд┐рдП SSES3 рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░ рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реЛрдЧреАред рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк:
public SSES3 SSES3 { get { return this.sSES3; } set { this.sSES3 = value; } }
рдорд╛рдЗрдВрдбрдлреБрд▓рдиреЗрд╕ рдЯреЗрд╕реНрдЯрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрдЪреНрдЫреБрдХ рд╣реИред рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХреЛрдб рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3029 рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 91, 95. AWSSDK.AppSync.Net45 CreateApiKeyResponseUnmarshaller .cs 91
рдореИрдВрдиреЗ рд╕рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реБрдП,
рдЕрдирдорд░рд╢рд╛рд▓ рдПрдХреНрд╕рд╕реЗрдкреНрд╢рди рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ред рдЕрдм рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╛рди рдЪреЗрдХ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ:
public override AmazonServiceException UnmarshallException(....) { .... if (errorResponse.Code != null && errorResponse.Code.Equals("LimitExceededException")) { return new LimitExceededException(errorResponse.Message, innerException, errorResponse.Type, errorResponse.Code, errorResponse.RequestId, statusCode); } if (errorResponse.Code != null && errorResponse.Code.Equals("LimitExceededException")) { return new LimitExceededException(errorResponse.Message, innerException, errorResponse.Type, errorResponse.Code, errorResponse.RequestId, statusCode); } .... }
рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдХрд▓ рдирд╣реАрдВ рд╣реИ - рдмрд╕ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪред рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░, рдРрд╕рд╛ рдкреИрдЯрд░реНрди рдХреЛрдб рдореЗрдВ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред
рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:- V3029 рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 75, 79. AWSSDK.CloudDirectory.Net45 CreateSchemaResponseUnmarshaller.cs 75
- V3029 рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 105, 109. AWSSDK.CloudDirectory.Net45 GetSchemaAsJsonResponseUnmarshaller.cs 105
- V3029 рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 201, 205ред AWSSDK.CodeCommit.Net45 рдкреЛрд╕реНрдЯрдХрдореЗрдиреНрдЯрдлреЙрд░рдкреЙрд▓рд░реИрд▓рд╕реЗрдВрдкреНрд░реЗрд╕реНрд╕реЗрдВрдЯрд╕ рдпреВрдПрдирдЖрд░реНрд╕рд╣реЗрд▓рд░ .cs 201
- V3029 рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 101, 105. AWSSDK.CognitoIdentityProvider.Net45 VerifySoftwareTokenResponseUnmarshaller.cs 101
- V3029 рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 72, 76. AWSSDK.Glue.Net45 рдЕрдкрдбреЗрдЯрд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдирд┐рд░реАрдХреНрд╖рдгрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред 72
- V3029 рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЪреЗрдХ рд▓рд╛рдЗрди: 123, 127. AWSSDK.Neptune.Net45 RestoreDBClusterFromSnapshotResponseUnmarshaller.cs 123
- V3029 рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЪреЗрдХ рд▓рд╛рдЗрди: 167, 171. AWSSDK.Neptune.Net45 RestoreDBClusterFromSnapshotResponseUnmarshaller.cs 167
- V3029 рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 127, 131. AWSSDK.RDS.Net45 RestoreDBClusterFromSnapshotResponseUnmarshaller.cs 127
- V3029 рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 171, 175. AWSSDK.RDS.Net45 RestoreDBClusterFromSnapshotResponseUnmarshaller.cs 171
- V3029 рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 99, 103. AWSSDK.Rekognition.Net45 рдорд╛рдиреНрдпрддрд╛
рддреБрдо рдХреНрдпрд╛ рд╣реЛPVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3062 рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ 'рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо' рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкрджреНрдзрддрд┐ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 'рдХрдВрдЯреЗрдВрд╕' рд╡рд┐рдзрд┐ рдХреЗ рдкрд╣рд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.MobileAnalytics.Net45 CustomEvent.cs 261
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ
GetAttribute рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛: рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЬрд╛рдБрдЪ рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕реНрд╡рдпрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рд╡рд┐рдзрд┐ рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ, рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ рдХрд┐ рдпрджрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо (рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо) рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (
_attributes рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ), рддреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛
рд╢реВрдиреНрдп ред рд╣рдХреАрдХрдд рдореЗрдВ, рдЬрдм рд╕реЗ рд╣рд╛рд▓рдд рдХрд╛ рдирд╛рдо
Name.Contains (FeatureName) рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдПрдХ рдорд╛рди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░,
рдЕрд╢рдХреНрдд рд▓реМрдЯрдиреЗ рдХреЗ рдмрдЬрд╛рдп
, рдПрдХ KeyNotFoundException рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдЗрдП рдЗрд╕ рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рджреЗрдЦреЗрдВ:
рдпрд╣ рд╡рд┐рдзрд┐ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо (рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо)
_attributes рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ
рдореМрдЬреВрдж рд╣реИред
рдЖрдЗрдП GetAttribute рд╡рд┐рдзрд┐ рдкрд░ рд╡рд╛рдкрд╕
рдЬрд╛рдПрдБ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░реЗрдВ:
public string GetAttribute(string attributeName) { if(string.IsNullOrEmpty(attributeName)) { throw new ArgumentNullException("attributeName"); } string ret = null; lock(_lock) { if(_attributes.ContainsKey(attributeName)) ret = _attributes[attributeName]; } return ret; }
рдЕрдм рд╡рд┐рдзрд┐ рд╡рд╣реА рдХрд░рддреА рд╣реИ рдЬреЛ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдмрддрд╛рдИ рдЧрдИ рд╣реИред
рдФрд░ рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЫреЛрдЯреА рдЯрд┐рдкреНрдкрдгреАред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд▓реЗрдЦрдХ
_attributes рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп
рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди
рд▓реЙрдХ рдирд┐рд░реНрдорд╛рдг рдмрд▓реНрдХрд┐ рдзреАрдорд╛ рдФрд░ рдмреЛрдЭрд┐рд▓ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ
рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдмрдЬрд╛рдп,
рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ -
рд╕рдорд╡рд░реНрддреА ред рдлрд┐рд░
рд▓реЙрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╢рд╛рдпрдж рдореБрдЭреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдХрд┐рд╕реА рднреА рдлреАрдЪрд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред
рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рд╡реНрдпрд╡рд╣рд╛рд░рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V3063 [CWE-571] рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: string.IsNullOrEmpty (inferredIndexName)ред AWSSDK.DynamoDBv2.PCL рд╕рдВрджрд░реНрднред рд╢рд╛рдмреНрджрд┐рдХ 802
private static string GetQueryIndexName(....) { .... string inferredIndexName = null; if (string.IsNullOrEmpty(specifiedIndexName) && indexNames.Count == 1) { inferredIndexName = indexNames[0]; } else if (indexNames.Contains(specifiedIndexName, StringComparer.Ordinal)) { inferredIndexName = specifiedIndexName; } else if (string.IsNullOrEmpty(inferredIndexName) &&
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рддрд░реНрдХ рдХрд┐рдпрд╛ред
INNOOEEpty (inferredIndexName) рдЪреЗрдХред рджрд░рдЕрд╕рд▓, рд╕реНрдЯреНрд░рд┐рдВрдЧ
inferredIndexName рдХреЛ рдЕрд╢рдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдлрд┐рд░ рдЗрд╕ рдЪрд░ рдХрд╛ рдорд╛рди рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрд╕реЗ
рд╢реВрдиреНрдп рдпрд╛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдЖрдЗрдП рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕реНрдерд┐рддрд┐ рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рддреЛ, рдкрд╣рд▓реЗ
рдЕрдЧрд░ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ (рдФрд░ рдЕрдЧрд▓реЗ рдПрдХ рдореЗрдВ рднреА),
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЗрдВрдбреЗрдХреНрд╕рдирд╛рдо рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪреЗрдХреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЪрд░
inferredIndexName рдПрдХ рдирдпрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЕрдм
рдмрдпрд╛рди рдкрд░ рддреАрд╕рд░реЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЗрд╕ рдХрдерди рдХреЗ рдЕрдкрд╡рд╛рдж (рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдиреЗ) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐
indexNames.Count> 0 , рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ
string.IsNullOrEmpty (inferredIndexName) рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реИред рд╢рд╛рдпрдж рдЪрд░
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЧрдП IndexexName рдФрд░
inferredIndexName рдХреЗрд╡рд▓ рднреНрд░рдорд┐рдд рд╣реИрдВред рдпрд╛ рддреАрд╕рд░рд╛ рдЪреЗрдХ рдмрд┐рдирд╛
рдХрд┐рд╕реА рдФрд░ рдХреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП,
рдпрджрд┐ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рд╣реЛ
if (string.IsNullOrEmpty(specifiedIndexName) && indexNames.Count == 1) { inferredIndexName = indexNames[0]; } else if (indexNames.Contains(specifiedIndexName, StringComparer.Ordinal)) { inferredIndexName = specifiedIndexName; } if (string.IsNullOrEmpty(inferredIndexName) && indexNames.Count > 0) throw new InvalidOperationException(....);
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд░реВрд░ рд╣реИ рдХрд┐ рд▓реЗрдЦрдХ рдЗрд╕рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИред
NullReferenceExceptionPVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3095 [CWE-476] рдирд▓ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ '
рдХрдВрдбреАрд╢рдирд╡реИрд▓реНрдпреВрдЬрд╝ ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 228, 238. AWSSDK.Core.Net45 JsonPolicyWriter.cs 228
private static void writeConditions(....) { .... foreach (....) { IList<string> conditionValues = keyEntry.Value; if (conditionValues.Count == 0)
рд╢реИрд▓реА рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ред рдЪрд░
рд╕реНрдерд┐рддрд┐рд╡реИрд▓реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЕрд╢рдХреНрдд рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЬрд╛рдБрдЪ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдЧреЗ рдХреЛрдб рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИред :)
рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
private static void writeConditions(....) { .... foreach (....) { IList<string> conditionValues = keyEntry.Value; if (conditionValues != null && conditionValues.Count == 0) continue; .... if (conditionValues != null && conditionValues.Count != 0) { .... } .... } }
рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рдИ рдЧрдИрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:- V3095 [CWE-476] рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'ts.Listeners' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: 140, 143. AWSSDK.Core.Net45 Logger.Diagnostic.cs 140
- V3095 [CWE-476] рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'obj' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 743, 745. AWSSDK.Core.Net45 JsonMapper.cs 743
- V3095 [CWE-476] 'рдорд▓реНрдЯреАрдкрд░реНрдЯрдЕрдкрд▓реЛрдбрдореВрд▓рд┐рдкрд╛рд░реНрдЯрдЕрдк рд▓реЛрдбрд░рдкрд╛рд░реНрдЯреНрд╕рд▓рд┐рд╕реНрдЯ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╢реВрдиреНрдп рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 65, 67. AWSSDK.S3.Net45 рдкреВрд░реНрдгрдореВрд▓рд┐рдкрд╛рд░реНрдЯUploadRequestMarshaller .cs 65
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреЗрддрд╛рд╡рдиреА рдЕрд░реНрде рдореЗрдВ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд┐рддрд┐ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдПрдХ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3125 [CWE-476] рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'рд░рд╛рдЬреНрдп' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 139, 127. AWSSDK.Core.Net45 RefreshingAWSCredentials.cs 139
private void UpdateToGeneratedCredentials( CredentialsRefreshState state) { string errorMessage; if (ShouldUpdate) { .... if (state == null) errorMessage = "Unable to generate temporary credentials"; else .... throw new AmazonClientException(errorMessage); } state.Expiration -= PreemptExpiryTime;
рдХреЛрдб рдЕрдВрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕рдорд╛рдирддрд╛
рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП
рд░рд╛рдЬреНрдп рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░,
рд╕реНрдЯреЗрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ
PreemptExpiryTime рдЗрд╡реЗрдВрдЯ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐
null рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдЕрдм рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░
NullReferenceException рд╕рдВрднрд╡ рд╣реИ ред рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рд╡рд┐рдХрд▓реНрдк:
private void UpdateToGeneratedCredentials( CredentialsRefreshState state) { string errorMessage; if (ShouldUpdate) { .... if (state == null) errorMessage = "Unable to generate temporary credentials"; else .... throw new AmazonClientException(errorMessage); } if (state != null) state.Expiration -= PreemptExpiryTime; .... }
рдХреЛрдб рдореЗрдВ рдЕрдиреНрдп рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:- V3125 [CWE-476] рд╢реВрдиреНрдп рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'рд▓рд┐рдкрдЯреЗрдХреНрд╕реНрдкреЗрд╕реНрдЯ.рдХрдВрдЯреЗрдВрдЯ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 395, 383. AWSSDK.Core.Net45 HttpHandler.cs 395
- V3125 [CWE-476] рд╢реВрдиреНрдп рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'рдбреЗрдЯрд╛рд╕реЗрдЯрдЕрдкрдбреЗрдЯреНрд╕' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 477, 437. AWSSDK.CognitoSync.Net45 Dataset.cs 477
- V3125 [CWE-476] 'cORSConfigurationCORSConfigurationcorsRulesListValue' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдЗрд╕реЗ null рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 125, 111. AWSSDK.S3.Net45 PutCORSConfigurationRequestMarshaller .cs 125
- V3125 [CWE-476] 'LifeecycleConfigurationLifecycleConfigurationrulesListValue' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдЗрд╕реЗ null рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 157, 68. AWSSDK.S3.Net45 PutLifecycleConfigurationRequestMarshaller.cs 157
- V3125 [CWE-476] рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'this.Key' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 199, 183. AWSSDK.S3.Net45 S3PostUploadRequest.cs 199
рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3009 [CWE-393] рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рдорд╛рди' рдХрд╛ рд╕рд╣реА рдорд╛рди рджреЗрддреА рд╣реИред AWSSDK.Core.Net45 Lexer.cs 651
private static bool State19 (....) { while (....) { switch (....) { case '"': .... return true; case '\\': .... return true; default: .... continue; } } return true; }
рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛
рд╕рд╣реА рд╣реЛрддреА рд╣реИ ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдореИрдВрдиреЗ
State19 рдкрджреНрдзрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ред рд╡рд╣ рдЕрдиреНрдп рд╕рдорд╛рди рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде
fsm_handler_table рд╣реИрдВрдбрд▓рд░ рдХреА рд╕рд░рдгреА рднрд░рдиреЗ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реИ (рдХреНрд░рдорд╢рдГ рдЙрдирдореЗрдВ рд╕реЗ 28 рдирд╛рдо рд╣реИрдВ, рдХреНрд░рдорд╢рдГ
рд░рд╛рдЬреНрдп 1 рд╕реЗ
рд░рд╛рдЬреНрдп 28 рддрдХ )ред рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐
рд╕реНрдЯреЗрдЯ 19 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдЕрдиреНрдп рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рднреА рдЪреЗрддрд╛рд╡рдиреА
V3009 [CWE-393] рдЬрд╛рд░реА рдХреА рдЧрдИ рдереАред рдпреЗ рд╣реИрдВрдбрд▓рд░ рд╣реИрдВ:
State23, State26, State27, State28 ред рдЙрдирдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдЕрд▓рд░реНрдЯ:
- V3009 [CWE-393] рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред AWSSDK.Core.Net45 Lexer.cs 752
- V3009 [CWE-393] рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред AWSSDK.Core.Net45 Lexer.cs 810
- V3009 [CWE-393] рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред AWSSDK.Core.Net45 Lexer.cs 822
- V3009 [CWE-393] рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред AWSSDK.Core.Net45 Lexer.cs 834
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣реИрдВрдбрд▓рд░ рдРрд░реЗ рдХреА рдШреЛрд╖рдгрд╛ рдФрд░ рдЖрд░рдВрднреАрдХрд░рдг рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
private static StateHandler[] fsm_handler_table; .... private static void PopulateFsmTables () { fsm_handler_table = new StateHandler[28] { State1, State2, .... State19, .... State23, .... State26, State27, State28 };
рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдХреЛрдб рджреЗрдЦреЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдХреЛрдИ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдереА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
State2 :
private static bool State2 (....) { .... if (....) { return true; } switch (....) { .... default: return false; } }
рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реИрдВрдбрд▓рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
public bool NextToken () { .... while (true) { handler = fsm_handler_table[state - 1]; if (! handler (fsm_context))
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░
рдЭреВрда рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛
рд╣реИ рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рд▓рд┐рдП
State19, State23, State26, State27 рдФрд░
State28 рдРрд╕рд╛ рдХрднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧ рд░рд╣рд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдкрд╛рдВрдЪ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ (рд╣рдореЗрд╢рд╛
рд╕рд╣реА рд╡рд╛рдкрд╕реА) рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдпрд╣ рдЗрд░рд╛рджрд╛ рдерд╛ рдФрд░ рдпрд╣ рдЯрд╛рдЗрдкреЛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдЗрд╕ рд╕рдм рдкрд░ рдЗрддрдиреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХреНрдпреЛрдВ рдирд┐рд╡рд╛рд╕ рдХрд░рддрд╛ рдерд╛? рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╣реИ рдХрд┐ рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдХреНрд╕рд░ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрджрд┐рдЧреНрдз рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╡реНрдпрдХреНрддрд┐ (рдПрдХ рдорд╢реАрди рдирд╣реАрдВ), рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИ, рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛ рд░рд╣рд╛ рд╣реИ, рдЕрднреА рднреА рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗ рдкрд╛ рд░рд╣рд╛ рд╣реИред рдХреЛрдб рдХреЛ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрд░реНрдерд╣реАрди рдЬрд╛рдБрдЪPVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3022 [CWE-571] рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'doLog' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддреА рд╣реИред AWSSDK.Core.Net45 StoredProfileAWSCredentials.cs 235
private static bool ValidCredentialsExistInSharedFile(....) { .... var doLog = false; try { if (....) { return true; } else { doLog = true; } } catch (InvalidDataException) { doLog = true; } if (doLog)
DoLog рд╡реИрд░рд┐рдПрдмрд▓ рдкрд░ рдзреНрдпрд╛рди
рджреЗрдВ ред
рдЭреВрда рдХреЗ рд╕рд╛рде рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдлрд┐рд░ рдХреЛрдб рдореЗрдВ рдпрд╣ рдЪрд░ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ
рд╕рд╣реА рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рддреЛ
рдЕрдЧрд░ (doLog) рдЬрд╛рдБрдЪ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрддреА рд╣реИред рд╢рд╛рдпрдж рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╣рд▓реЗ рдПрдХ рд╢рд╛рдЦрд╛ рдереА рдЬрд┐рд╕рдореЗрдВ
doLog рд╡реИрд░рд┐рдПрдмрд▓
рдХреЛ рдХреЛрдИ рдорд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛
рдЧрдпрд╛ рдерд╛ , рдлрд┐рд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рдордп рдЗрд╕рдореЗрдВ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд
рдЧрд▓рдд рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдРрд╕реА рдХреЛрдИ рд╢рд╛рдЦрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрд╕реА рддрд░рд╣ рдХреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐:
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдкрд░рд┐рдгрд╛рдо' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред AWSSDK.CognitoSync.PCL SQLiteLocalStorage.cs 353
public void PutValue(....) { .... bool result = PutValueHelper(....); if (!result) <= { _logger.DebugFormat("{0}", @"Cognito Sync - SQLiteStorage - Put Value Failed"); } else { UpdateLastModifiedTimestamp(....); } .... }
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐
рдкрд░рд┐рдгрд╛рдо рдЪрд░ рдХрд╛ рдореВрд▓реНрдп рд╣рдореЗрд╢рд╛
рд╕рд╣реА рд╣реЛрддрд╛
рд╣реИ ред рдпрд╣ рддрднреА рд╕рдВрднрд╡ рд╣реИ рдЬрдм
PutValueHelper рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛
рд╕рд╣реА рд╣реЛ ред рдЗрд╕ рд╡рд┐рдзрд┐ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
private bool PutValueHelper(....) { .... if (....)) { return true; } if (record == null) { .... return true; } else { .... return true; } }
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд┐рдзрд┐ рдХрд┐рд╕реА рднреА рд╣рд╛рд▓рдд рдореЗрдВ
рд╕рд╣реА рд▓реМрдЯреЗрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреАред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3009 [CWE-393] рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рдорд╛рди' рдХрд╛ рд╕рд╣реА рдорд╛рди рджреЗрддреА рд╣реИред SQLiteLocalStorage.cs 1016
рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрдм рдореИрдВ
V3009 рдХреА рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдмрдЪрд╛ рд▓рд┐рдпрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐
V3022 рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдерд╛ред
рдХреЙрдкреА-рдкреЗрд╕реНрдЯред рдлрд┐рд░PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3001 рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ 'this.token == JsonToken.String' рдмрд╛рдИрдВ рдУрд░ рдФрд░ рджрд╛рдИрдВ рдУрд░ '' || рдСрдкрд░реЗрдЯрд░ред AWSSDK.Core.Net45 JsonReader.cs 343
public bool Read() { .... if ( (this.token == JsonToken.ObjectEnd || this.token == JsonToken.ArrayEnd || this.token == JsonToken.String ||
JsonToken.String рдорд╛рди рдХреЗ
JsonToken рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдЗрд╕
.oken рдлрд╝реАрд▓реНрдб рдХреА рдбрдмрд▓ рддреБрд▓рдирд╛ рдХрд░реЗрдВред рд╕рдВрднрд╡рддрдГ рддреБрд▓рдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЧрдгрдирд╛ рдореВрд▓реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдПрдХ рдЧрдВрднреАрд░ рдЧрд▓рддреА рдХреА рдЧрдИ рд╣реИред
рд▓рд╛рдкрд░рд╡рд╛рд╣реА + рд▓рд╛рдкрд░рд╡рд╛рд╣реА?PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3025 [CWE-685] рдЧрд▓рдд рдкреНрд░рд╛рд░реВрдкред 'рдлрд╝реЙрд░реНрдореЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╛рд░реВрдк рдкреНрд░рд╛рд░реВрдк рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИред рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛: AWSConfigs.AWSRegionKeyред AWSSDK.Core.Net45 AWSRegion.cs 116
public InstanceProfileAWSRegion() { .... if (region == null) { throw new InvalidOperationException( string.Format(CultureInfo.InvariantCulture, "EC2 instance metadata was not available or did not contain region information.", AWSConfigs.AWSRegionKey)); } .... }
рд╕рдВрднрд╡рддрдГ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ
.ormat рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╣рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ
рд╕реНрдкреЗрд╕рд┐рдпрд░ {0} рд╢рд╛рдорд┐рд▓ рдерд╛ , рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП
AWSConfigs.AWSRegionKey рддрд░реНрдХ
рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд┐рд░ рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛, рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдЪрд▓рд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд╡реЗ рддрд░реНрдХ рдХреЛ рд╣рдЯрд╛рдирд╛ рднреВрд▓ рдЧрдПред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдПрдХ рд╡рд┐рдкрд░реАрдд рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдПрдХ рддрд░реНрдХ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ), рд▓реЗрдХрд┐рди рдпрд╣ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИред рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
if (region == null) { throw new InvalidOperationException( "EC2 instance metadata was not available or did not contain region information."); }
рдЕрд╕реБрд░рдХреНрд╖рд┐рддPVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V3083 [CWE-367] 'mOnSyncSuccess' рдЗрд╡реЗрдВрдЯ рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрдордВрддреНрд░рдг, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.CognitoSync.PCL Dataset.cs 827
protected void FireSyncSuccessEvent(List<Record> records) { if (mOnSyncSuccess != null) { mOnSyncSuccess(this, new SyncSuccessEventArgs(records)); } }
рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЙрд▓ рдХреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ред
рдЕрд╢рдХреНрдд рдХреЗ рд▓рд┐рдП
mOnSyncSuccess рдЪрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдФрд░ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ, рдПрдХ рдШрдЯрдирд╛ рдХреЛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЫреЛрдЯреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА рдмреЗрд╣рддрд░ рд╣реИ:
protected void FireSyncSuccessEvent(List<Record> records) { mOnSyncSuccess?.Invoke(this, new SyncSuccessEventArgs(records)); }
рдХреЛрдб рдореЗрдВ рдЕрдиреНрдп рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:- V3083 [CWE-367] 'mOnSyncFailure' рдЗрд╡реЗрдВрдЯ рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрдордВрддреНрд░рдг, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.CognitoSync.PCL Dataset.cs 839
- V3083 [CWE-367] рдШрдЯрдирд╛ рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.Core.PCL AmazonServiceClient.cs 332
- V3083 [CWE-367] рдШрдЯрдирд╛ рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.Core.PCL AmazonServiceClient.cs 344
- V3083 [CWE-367] рдШрдЯрдирд╛ рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.Core.PCL AmazonServiceClient.cs 357
- V3083 [CWE-367] рдЗрд╡реЗрдВрдЯ 'mExceptionEvent' рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрдордВрддреНрд░рдг, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.Core.PCL AmazonServiceClient.cs 366
- V3083 [CWE-367] рдШрдЯрдирд╛ рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.Core.PCL AmazonWebServiceRequest.cs 78
- V3083 [CWE-367] 'OnRead', NullReferenceException рдШрдЯрдирд╛ рдХреЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.Core.PCL EventStream.cs 97
- V3083 [CWE-367] рдШрдЯрдирд╛ рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.Core.Android NetworkReachability.cs 57
- V3083 [CWE-367] рдШрдЯрдирд╛ рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.Core.Android NetworkReachability.cs 94
- V3083 [CWE-367] рдШрдЯрдирд╛ рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.Core.iOS NetworkReachability.cs 54
рдЕрдзреВрд░рд╛ рд╡рд░реНрдЧPVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3126 рдЯрд╛рдЗрдк 'JsonData' IEquatable рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ <T> рдЗрдВрдЯрд░рдлрд╝реЗрд╕ 'GetHashCode' рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред AWSSDK.Core.Net45 JsonData.cs 26
public class JsonData : IJsonWrapper, IEquatable<JsonData> { .... }
JsonData рд╡рд░реНрдЧ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕рдХреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рдореЗрдВ рдирд╣реАрдВ рджрд┐рдпрд╛, рдХреЗрд╡рд▓ рдЗрд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдУрд╡рд░рд░рд╛рдЗрдб
GetHashCode рдкрджреНрдзрддрд┐ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣
JsonData рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг
рдмрди рд╕рдХрддрд╛ рд╣реИ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рдеред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд░рдгрдиреАрддрд┐ рдмрджрд▓ рд╕рдХрддреА рд╣реИред рдпрд╣ рддреНрд░реБрдЯрд┐
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреИрдЯрд┐рд╕реНрдЯрд┐рдХрд▓ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ .NET рдХреЛрдб рдХреЗ рд▓рд┐рдП AWS SDK рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд╣реБрдИ рд╕рднреА рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпрд╛рдБред рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдХреЛрдб рдХреА 5 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╢рд╛рдпрдж, рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореБрдЭреЗ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рдХреБрдЫ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрд╕реНрдкрд╖реНрдЯ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣рдореЗрд╢рд╛ рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рд░реНрдЧреЗрдИ рдЦреНрд░реЗрдиреЛрд╡ред .NET рдХреЗ рд▓рд┐рдП Amazon Web Services SDK рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛