
рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХреЛ рдЯреНрд░реИрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред :) рдЖрдЬ рд╣рдорд╛рд░реА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╢реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╕рд╛рдордЧреНрд░реА рд╣реИ - .NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП AWS SDK рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдбред рдЙрд╕ рд╕рдордп, рд╣рдордиреЗ C ++ рдХреЗ рд▓рд┐рдП AWS SDK рдХреА рдЬрд╛рдБрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ред рддрдм рдХреБрдЫ рдЦрд╛рд╕ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рдерд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрд╕рдбреАрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ .NET рдХреНрдпрд╛ рдореВрд▓реНрдп рд╣реИред рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдпрд╣ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рджреБрдирд┐рдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдЕрд╡рд╕рд░ рд╣реИред
.NET рдХреЗ рд▓рд┐рдП Amazon Web Services (AWS) SDK рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЯреВрд▓ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде AWS рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЗрдВ .NET рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдпрд╣ рд╕реЗрдЯ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд╛рдлреА рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред SDK рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди AWS рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП API .NET рдЬреИрд╕реЗ рдЕрдореЗрдЬрди S3, Amazon EC2, DynamoDB рдФрд░ рдЕрдиреНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред SDK рд╕реНрд░реЛрдд рдХреЛрдб
GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕ рд╕рдордп рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА C ++ рдХреЗ рд▓рд┐рдП AWS SDK рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рд╣реИред рд▓реЗрдЦ рдЫреЛрдЯрд╛ рд╣реБрдЖ - рдХреЛрдб рдХреА 512 рд╣рдЬрд╛рд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреЗрд╡рд▓ рдХреБрдЫ рд╣реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рдИ рдЧрдИрдВред рдЗрд╕ рдмрд╛рд░ рд╣рдо рдХреЛрдб рдХреЗ рдПрдХ рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ 34 рд╣рдЬрд╛рд░ рд╕реАрдПрд╕рдПрд╕-рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ (рдЦрд╛рд▓реА рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА 5 рдорд┐рд▓рд┐рдпрди рд╣реИред рдХреЛрдб рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ (664-рд╕реАрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ 200 рд╣рдЬрд╛рд░ рд▓рд╛рдЗрдиреЗрдВ) рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рд╣реИред
рдпрджрд┐ рдПрд╕рдбреАрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА .NET рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд▓рдЧрднрдЧ C ++ (рдкреНрд░рддрд┐ 512 рдХреЗрдПрд▓рдУрд╕реА рдореЗрдВ рджреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ) рдХреЗ рд╕рдорд╛рди рд╣реИ, рддреЛ рд╣рдореЗрдВ рд▓рдЧрднрдЧ 10 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдмреЗрд╢рдХ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЧрд▓рдд рдЧрдгрдирд╛ рдкрджреНрдзрддрд┐ рд╣реИ, рдЬреЛ рднрд╛рд╖рд╛рдИ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдФрд░ рдХрдИ рдЕрдиреНрдп рдХрд╛рд░рдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкрд╛рдардХ рдЕрдм рдЙрдмрд╛рдК рддрд░реНрдХ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ 6.27 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреЗрдХ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рд╕рд┐рд░реНрдл рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ .NET рдХреЗ рд▓рд┐рдП AWS SDK рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ 40 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрд╕рдбреАрдХреЗ рдХреЛрдб рдХреА рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ (512 рдХреЗрдПрд▓рдУрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 4 рддреНрд░реБрдЯрд┐рдпрд╛рдВ) рдХреЛ рди рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реА # рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рд╕реА ++ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛рддреНрдордХ рдЧреБрдгрд╡рддреНрддрд╛ рднреА рд╣реИред рдПрдХ рдорд╣рд╛рди рдкрд░рд┐рдгрд╛рдо!
.NET рдХреЗ рд▓рд┐рдП AWS SDK рдХреЗ рд▓реЗрдЦрдХ, рдЖрдк рдЕрд╕рд▓реА рдЪрдореНрдкреА рд╣реИрдВ! рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде, рдЖрдк рдХреЛрдб рдХреА рдЬрдмрд░рджрд╕реНрдд рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдиреНрдп рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░реАрди рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ 2 рд╕реЗрдВрдЯ рдирд╣реАрдВ рджреЗрддрд╛ред :) рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЕрдореЗрдЬрд╝реЕрди рд╕реЗ рдПрдХ рд▓рдВрдмрдмрд░реНрдб рдЯреАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпрд╣ рджреБрдирд┐рдпрд╛ рднрд░ рдХреА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рдХрдВрдкрдиреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ .NET рдХреЗ рд▓рд┐рдП AWS SDK рдЯреАрдо рдиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИред рд╡реИрд╕реЗ рднреА, рдореБрдЭреЗ рдПрд╕рдбреАрдХреЗ рдХреЛрдб рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдо рд╕реЗ рдХрдо, рдЯреАрдо рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдХ
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╣рдореЗрд╢рд╛
рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ :)ред
рдирддреАрдЬрддрди, рдореИрдВрдиреЗ рдПрд╕рдбреАрдХреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдмрдЧ рдвреВрдВрдврдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░, рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред
рддрд░реНрдХ рдореЗрдВ рддреНрд░реБрдЯрд┐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; } }
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рд╣реА рдЪрд░ рдХреЗ рд▓рд┐рдП рдмрд╛рд░-рдмрд╛рд░ рдореВрд▓реНрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИред рдХреЛрдб рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХрд╛рдо рдХреЗ рддрд░реНрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ: рдЪрд░ рдХрд╛ рдорд╛рдиред рдЗрд╕
.linker.s3.region рд╣рдореЗрд╢рд╛ рд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЪрд░
рдорд╛рди рдХреЗ рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред
рдЕрдЧрд░ (String.IsNullOrEmpty (рдорд╛рди)) ред
if block рдХреЗ рд╢рд░реАрд░ рдореЗрдВ
рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЫреВрдЯ рдЧрдпрд╛ рдерд╛ред рдХреЛрдб рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рддрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
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; }
рдПрдХ рдЯрд╛рдЗрдкреЛ рдХрд╛ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрджрд╛рд╣рд░рдг, рдЬреЛ
рдСрдирдлрд╝реЗрд▓реНрдпреЛрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ
рдЧреЗрдЯ рдПрдХреНрд╕реЗрд╕рд░ рдореЗрдВ рдПрдХ рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп
, рдСрдирдлреЗрд▓реНрдпреЛрд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИред рд╕рд╣реА рдкреНрд░рдХрд╛рд░:
public OnFailure? OnFailure { get { return this.onFailure; } set { this.onFailure = value; } }
рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ: "рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛?" рдЕрдм рддрдХ - рдХреИрд╕реЗ рдирд╣реАрдВред рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕реНрдерд╛рдпреА рд╣реИред рдПрдХ рдмрд┐рдВрджреБ рдкрд░, рдХреЛрдИ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдРрд╕реЗ рдЯрд╛рдЗрдкреЛрд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЯрд┐рдкреНрдкрдгреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рд╣реИ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ
рдСрдирдлрд╝реЗрд▓рд┐рдпрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╕рдВрдХрд▓рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рдХрд╛рдлреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдзрд╛рд░рдгрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕реА рддрд░рд╣ рдХреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐:
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: 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; } }
рд╡рд┐рдЪрд╛рд░ рдкрд░ рдкрд░реАрдХреНрд╖рдгрдЕрдм рдореИрдВ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдПрдХ рдХрд╛рд░реНрдп рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рд╕реЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдХреЛрдб рджрд┐рдЦрддрд╛ рд╣реИ, рдЙрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V3029 рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'рдЕрдЧрд░' рдХрдерди рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 91, 95. AWSSDK.AppSync.Net45 CreateApiKeyResponseUnmarshaller .cs 91
рдореИрдВрдиреЗ
UnmarshallException рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рд░ рдЙрд╕ рдЪреАрдЬрд╝ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдм рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╛рди рдЪреЗрдХ рдПрдХ рджреВрд╕рд░реЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ:
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 рдкреЛрд╕реНрдЯрдХреЙрдордореЗрдВрдЯрдлреЛрд░рдкреЙрд▓рд░рд░реИрдкреНрд▓реЗрд╕реНрдЯреНрд░рд┐рдпрд╛рд╕реБрдкрд░рд╣реЙрд▓рд░ред
- 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 рдорд╛рдиреНрдпрддрд╛
рдпрд╣ рдХреНрдпрд╛ рд╣реИ?рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V3062 рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ 'рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯрдирд╛рдо' рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 'рдХрдВрдЯреЗрдВрд╕' рд╡рд┐рдзрд┐ рдХреЗ рдкрд╣рд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AWSSDK.MobileAnalytics.Net45 CustomEvent.cs 261
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ
GetAttribute рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИ: рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдореЗрдВ рд╕реНрд╡рдпрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╡рд┐рдзрд┐ рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдпрджрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо (рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо) рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╢рдмреНрджрдХреЛрд╢
_attributes рдореЗрдВ ), рддреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ -
рдЕрд╢рдХреНрдд ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХрд╛
рдЧреБрдг рд╣реИред рдирд╛рдо (рдХреЙрдиреНрдЯреЗрдХреНрдЯреНрд╕) (рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо) рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░,
рдЕрд╢рдХреНрдд рд▓реМрдЯрдиреЗ рдХреЗ рдмрдЬрд╛рдп
, рдПрдХ рдЕрдкрд╡рд╛рдж
KeyNotFoundException рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдЗрдП рдЗрд╕ рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдпрд╣ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрдиреНрдп рд╡рд┐рдзрд┐ рджреЗрдЦрдиреА рдЪрд╛рд╣рд┐рдП:
рдпрд╣ рд╡рд┐рдзрд┐ рдЬрд╛рдБрдЪрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо (рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдХреБрдВрдЬреА) рд╢рдмреНрджрдХреЛрд╖ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдЪрд▓рд┐рдП рдлрд┐рд░ рд╕реЗ
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) &&
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрдХ
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдерд╛ред
SsNullOrEmpty (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(....);
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЙрддреНрддрд░ рджреЗрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡реИрд╕реЗ рднреА, рд▓реЗрдЦрдХ рдХреЛ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
NullReferenceExceptionрдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: 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 рдРрд╕рд╛ рдХрднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧ рд░рд╣рд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдкрд╛рдВрдЪ рд╣реИрдВрдбрд▓рд░ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ (рд╣рдореЗрд╢рд╛
рд╕рдЪ рд▓реМрдЯрд╛рдПрдВрдЧреЗ), рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдпрд╣ рдЗрддрдирд╛ рд╡рд┐рд╡рд╛рджрд┐рдд рдерд╛ рдФрд░ рдЯрд╛рдЗрдкреЛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдерд╛ред
рдореИрдВ рдЗрд╕ рд╕рдм рдореЗрдВ рдЗрддрдирд╛ рдЧрд╣рд░рд╛ рдХреНрдпреЛрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ? рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЗрд╕ рдорд╛рдпрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдХреНрд╕рд░ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрджрд┐рдЧреНрдз рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╡реНрдпрдХреНрддрд┐ (рдПрдХ рдорд╢реАрди рдирд╣реАрдВ), рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИ, рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдПрдХ рдкреВрд░реНрдг рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдордп рд╕реАрдЦрдиреЗ рдХреЗ рдХреЛрдб рднреА рдЦрд░реНрдЪ рдХрд┐рдП рд╣реИрдВред рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрд╕ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдЕрд░реНрдерд╣реАрди рдЬрд╛рдБрдЪрдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: 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 ||
рдпрд╣ рдлрд╝реАрд▓реНрдб
..ten рдХреА рддреБрд▓рдирд╛
JsonToken рдХреЗ рдорд╛рди рд╕реЗ рджреЛ рдмрд╛рд░ рдХреА
рдЬрд╛рддреА рд╣реИ ред рдЧрдгрдирд╛
JsonToken рдХреА рд╕реНрдЯреНрд░рд┐рдВрдЧ ред рд╕рдВрднрд╡рддрдГ, рддреБрд▓рдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдХ рдФрд░ рдЧрдгрдирд╛ рдореВрд▓реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдпрд╣рд╛рдВ рдПрдХ рдЧрдВрднреАрд░ рдЧрд▓рддреА рдХреА рдЧрдИ рд╣реИред
Refactoring + рдЕрд╕рд╛рд╡рдзрд╛рдиреА?рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: 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' IEquitable <T> рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ 'GetHashCode' рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред AWSSDK.Core.Net45 JsonData.cs 26
public class JsonData : IJsonWrapper, IEquatable<JsonData> { .... }
JsonData рд╡рд░реНрдЧ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЗрд╕рдХреА рдШреЛрд╖рдгрд╛ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реБрдП рдЗрд╕реЗ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ
GetHashCode, рдЬреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
JsonData рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг
рдмрди рд╕рдХрддрд╛ рд╣реИ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рдеред рд╕рдВрднрд╡рддрдГ, рдлрд┐рд▓рд╣рд╛рд▓ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд░рдгрдиреАрддрд┐ рдмрджрд▓ рд╕рдХрддреА рд╣реИред рдпрд╣ рддреНрд░реБрдЯрд┐
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖рдпреЗ рд╕рднреА рджрд┐рд▓рдЪрд╕реНрдк рдмрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ .NET рдХреЗ рд▓рд┐рдП AWS SDK рдХреЗ рдХреЛрдб рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореБрдЭреЗ рдХреЛрдб рдХреА 5 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрд╛рд░реА рдХреА рдЧрдИ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореБрдЭреЗ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рдХреБрдЫ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬреЛрдбрд╝рдиреЗ рджреЗрдЧрд╛ред рдлрд┐рд░ рднреА, рдпрд╣ рднреА рдХрд╛рдлреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣рдореЗрд╢рд╛ рдХреЗрд╡рд▓ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред