发布日期:2021 年 5 月 12 日

此版本包括以下增强功能:

Lattix Architect 集成

我们添加了与 Lattix Architect 的集成,以帮助您分析和改进您的软件架构。C/C++test 现在可以为您的项目收集代码依赖数据,并将数据导出为文件,以便以后可以导入到 Lattix Architect。有关详细信息,请参见与 Lattix Architect 集成

增强的 GitHub 集成

此版本包括以下有助于简化 GitHub 工作流程的增强功能:

  • 支持以 GitHub 的 SARIF 格式生成报告,这使 GitHub 能够将 C/C++test 静态分析结果呈现为 GitHub 代码扫描警报。
  • 新的 C/C++test 操作,用于在 C/C++test 中运行分析并在 GitHub 中作为项目的一部分查看结果。 

有关其他信息,请参阅 GitHub 上的 C/C++test 操作文档:https://github.com/marketplace/actions/run-parasoft-c-c-test

扩展的安全合规性包

我们通过添加对以下标准的支持来扩展安全包:

  • DISA-ASD-STIG
  • OWASP API Security Top 10-2019

新的测试配置将帮助您检测上述标准确定的弱点。请参阅新建和更新测试配置

新建和更新测试配置

我们添加了以下测试配置:

  • DISA-ASD-STIG
  • 导出代码依赖数据
  • OWASP API Security Top 10 2019

新建的和更新的代码分析规则

我们添加了新的静态分析规则,以扩展合规性标准的覆盖率。有关新建规则和更新规则的列表,请参见新建规则更新规则

其他变更

  • 您可以使用 C/C++test 的功能将存储在团队服务器上的弃用抑制迁移到新格式,请参阅 处理弃用抑制
  • 我们改进了 C/C++test 在运行流分析和收集代码覆盖率时的性能。

  • 您现在可以通过向 Parasoft 发送匿名使用数据来帮助我们改进 C/C++test。默认情况下,禁用报告使用数据——您可以随时使用IDE 或 C/C++test 配置设置选择加入。

不建议使用和删除的环境支持

删除了对平台的支持

现在删除了对以下环境的支持:

  • 32 位平台
  • Windows 7
  • Windows Server 2008
  • Windows Server 2012

已弃用对 IDE 的支持

对以下 IDE 的支持现已弃用,并且在以后的版本中将删除:

  • Visual Studio 2012
  • Visual Studio 2013

已解决的 Bugs 和 FRs

Bug/FR 编号

说明

CPP-46176

 重建访问受保护成员

CPP-46192

改进 AUTOSAR-A3_9_1 的映射

CPP-47046

MISRA2004-13_7_aj (MISRAC2012-RULE_14_3-aa) 应该检查 'char’类型的实际大小

CPP-47074

OPT-05 报告对 lambda 中使用的变量的误报违规

CPP-47619

从 libcpptesttrace64.so 的发行版中删除 __strtok_r 的使用

CPP-47708

std::unordered_map 编译错误

CPP-47423

MISRA2008-5_0_6_a 漏报:未检测到更窄类型的隐式转换 IAR_ARM_7.80.4

CPP-46938

AUTOSAR-M4_10_2-a 和 CODSTA-131 误报 - 数组索引与指针初始化混淆

CPP-47426

CODSTA-CPP-53 (AUTOSAR-A7_1_1-a) 在通过引用在 lambda 中捕获对象时报告误报违规

CPP-47124

METRIC.DIF 不应该计算没有显式块的 else-if 语句

CPP-47454

CODSTA-161_a 在实质上是布尔类型的参数用作 && 中的参数时报告误报,

CPP-47795

检查圈复杂度(CC、SCC、MCC)的指标不一致

CPP-47623

当编译指示遵循 asm 声明时解析器崩溃

CPP-47151

改进 JSF-164 的映射(使用 BD-PB-BADSHIFT)

CPP-47196

MISRA2008-3_2_2(全局规则)不应报告未定义的 constexpr 变量的违规情况

CPP-47118

PREPROC-01、PREPROC-10:文档具有误导性

CPP-46917

为 Windows 适配 C/C++test UT CMake 扩展

CPP-46555

GCC/Clang 窗口的 __atomic_compare_exchange_8 定义不正确

CPP-47437

使用 /permissive- 对 vc_14_2 的类注入设置不正确

CPP-46560

重构访问私有成员

CPP-47595

已弃用的属性接受第二个参数。

CPP-47669

当标头包含模板类及其专业化时,NAMING-32 (AUTOSAR-A2_8_1-a) 报告误报

CPP-47205

MISRA2004-12_13 不会触发初始化程序中的增量操作

CPP-47013

多个重载函数实例

CPP-47467

缺少 FlowAnalysis 违规路径的代码高亮

CPP-46918

支持 IAR BXARM 编译器

CPP-46987

MISRA2004-16_9 不报告全局初始值设定项中使用的函数标识符

CPP-46988

MISRA2004-10_1_* 规则不报告将常量函数参数隐式转换为更窄类型的违规行为

CPP-46990

关闭大括号后使用空语句时,MISRA2004-14_3 不报告违规

CPP-47045

MISRA2004-17_4 在指针算术中使用指针类型表达式时不报告违规

CPP-46772

错误:表达式必须有一个常量值 - constexpr 的问题

CPP-46983

错误:表达式必须有一个常量值 constexpr auto memberFunctionConst = ConstGetMember( &ClassWithMember::GetInt);

CPP-47340

遍历很长的名称引用列表时堆栈耗尽

CPP-47376

错误:多个运算符 "==”匹配这些操作数:内置运算符 "arithmetic == arithmetic"

CPP-47393

没有函数模板 "std::distance”的实例与参数列表匹配

CPP-47466

错误:类实例化时的过度递归

CPP-46964

错误:“EdidImageAspectRatio”类型的值不能用于初始化“无符号的字符”类型的实体

CPP-47367

错误:不能在友元声明中指定"= default"

CPP-46340

允许通过高级设置重新配置项目特定临时数据的位置

CPP-47319

EXCEPT-08 (AUTOSAR-M15_3_1-a) 在未使用构造函数抛出异常时报告误报违规

CPP-47320

当浮点类型的表达式用作构造函数调用中的参数时,CODSTA-198 (AUTOSAR-M5_0_7-a) 报告误报违规

CPP-47330

当类型用作模板参数时,GLOBAL-UNUSEDTYPE (AUTOSAR-A0_1_6-a) 报告误报违规

CPP-47341

GLOBAL-ONEEXTERNDEF (AUTOSAR-M3_2_4-a) 在函数定义为 =default 外部类时报告误报违规

CPP-47468

为 C++ 启用 METRICS-40

CPP-47469

CODSTA-CPP-32 (AUTOSAR-A3_1_5-a, JSF-109) 不应报告旨在内联的函数的违规行为

CPP-47548

改进 AUTOSAR A16-0-1 的映射

CPP-47612

AUTOSAR-A2_7_2 误报

CPP-47661

AUTOSAR-A5_2_2-a 误报

CPP-47662

AUTOSAR-A7_1_5-a:修复规则报文中的错字

CPP-47673

CODSTA-MCPP-38 (AUTOSAR-A8_5_2-a) 报告循环变量的误报

CPP-47675

INIT-06 (AUTOSAR-A12_1_1-b) 在使用委托构造函数时报告误报

CPP-47783

CODSTA-CPP-105 (AUTOSAR-A12_7_1-a) 在使用委托构造函数时报告误报

CPP-47533

默认模板参数转换导致 SFINAE 失败。

CPP-45988

错误:没有重载函数“ac::com::cpp_binding::deserialize_args_from_someip”的实例与参数列表匹配

CPP-48192

cpptestcc:内部错误:断言在以下位置失败:"parasoft.c", p_create_token 中的第 1335 行

CPP-47620

当表达式中使用多个取消引用时,MISRA2004-16_7 (MISRA2008-7_1_2_a) 报告不一致

FA-4940

BD-PB-CC-2 误报

FA-8083

BD-PB-OVERFNZT 误报

FA-8102

BD-PB-OVERFNZT 误报数组在子函数中的未知位置以零终止。

FA-8107

BD-PB-VALRANGE 在 for 循环中报告误报违规

FA-8314

BD-PB-CC 报告误报

FA-8322

在 C++11 模式下将常量结构作为参数传递时创建的 CFG 不正确

FA-8337

规则 MISRAC2012-DIR_4_1-a(BD-PB-ARRAY) 的误报

FA-8339

BD-PB-VOVR 误报

FA-8347

当循环变量被转换时 BD-PB-ARRAY 误报

PT-641SVN 证需要引号
PT-735 无法在 Firefox 浏览器中浏览嵌套报告 HTML 文件
PT-866将测试配置导入 2020.2 时会自动恢复 10.4.3 中清除的文件内容模式 




新建规则

规则 ID

说明

AUTOSAR-A16_0_1-e

不得使用 #undef

AUTOSAR-M0_1_3-c

避免未使用的私有成员变量

AUTOSAR-M5_0_8-b

浮动类型的复杂表达式的值不应转换为更宽的浮动类型

BD-PB-NORETDECL

使用指定不返回的属性声明不返回函数

CERT_C-FLP34-b

避免浮点数从宽浮点数到窄浮点数的隐式转换

CODSTA-198_b

浮点类型的复杂表达式的值不应强制转换为整数类型

CODSTA-220

整数常量宏的参数应该是具有适当值的十进制、八进制或十六进制常量

CODSTA-221

不要在函数类型的规范中包含任何类型限定符

CODSTA-222

避免从较宽类型到较窄类型的隐式整数转换

CODSTA-223

来自 cstdint 的固定宽度整数类型,指示大小和符号,应用于代替基本数字类型

CODSTA-CPP-106

使用委托构造函数减少代码重复

CODSTA-MCPP-53

不要在用 const 或 consttype 声明的对象上使用 std::move

CODSTA-MCPP-54

不要创建 std::array 的右值引用

HICPP-16_1_1-e

#endif 预处理器指令将仅用于防止多次包含同一头文件

HICPP-16_1_1-f

#if 预处理器指令将仅用于防止多次包含同一头文件

HICPP-16_1_1-g

#error 指令不得使用

HICPP-16_1_1-h

#pragma 指令不得使用

HICPP-16_1_1-i

不得使用 #undef

JSF-026_b

不应使用 #if 预处理器指令

JSF-026_c

#error 指令不得使用

JSF-026_d

#pragma 指令不得使用

JSF-026_e

不得使用 #undef

JSF-028_b

#endif 预处理器指令将仅用于防止多次包含同一头文件

MISRA2004-10_4_b

浮点类型的复杂表达式的值不应强制转换为整数类型

MISRA2008-0_1_3_c

消除未使用的私有成员变量

MISRA2008-16_2_1_d

#endif 预处理器指令将仅用于防止多次包含同一头文件

MISRA2008-16_2_1_e

#if 预处理器指令将仅用于防止多次包含同一头文件

MISRA2008-16_2_1_f

#error 指令不得使用

MISRA2008-16_2_1_g

#pragma 指令不得使用

MISRA2008-16_2_1_h

不得使用 #undef

MISRA2008-5_0_8_b

显式整数或浮点转换不应增加 cvalue 表达式的基础类型的大小

OWASP2019-API10-a

所有异常都应重新抛出或使用标准记录器记录

OWASP2019-API10-b

不要使用 'syslog' 函数进行日志记录

OWASP2019-API2-a

不要使用弱加密功能

OWASP2019-API3-a

不要将空容器迭代器传递给标准算法作为目标

OWASP2019-API3-b

避免超出范围访问数组

OWASP2019-API3-c

避免超出范围访问数组和指针

OWASP2019-API3-d

避免由于定义不正确的格式限制而导致缓冲区溢出

OWASP2019-API3-e

避免由于读取非零终止字符串而导致溢出

OWASP2019-API3-f

从缓冲区读取时避免溢出

OWASP2019-API3-g

写入缓冲区时避免溢出

OWASP2019-API3-h

避免由于定义了不正确的格式限制而导致污染数据造成缓冲区溢出

OWASP2019-API3-i

避免从受污染的数据中读取缓冲区溢出

OWASP2019-API3-j

避免缓冲区从受污染的数据中溢出

OWASP2019-API3-k

正确的种子伪随机数生成器

OWASP2019-API3-l

避免将敏感数据传递给写入日志文件的函数

OWASP2019-API3-m

在检查符号链接的存在时避免竞争条件

OWASP2019-API3-n

应限制使用系统属性(环境变量)

OWASP2019-API3-o

避免使用 MFC 库中的时间的函数

OWASP2019-API3-p

不要将由于应用程序错误而导致的潜在敏感信息打印到异常消息中

OWASP2019-API3-q

指向结构的指针不应传递给可以将数据复制到用户空间的函数

OWASP2019-API4-a

在用于确定内存分配的大小之前,先验证可能受到污染的数据

OWASP2019-API4-b

确保释放资源

OWASP2019-API7-a

正确使用 errno 值

OWASP2019-API7-b

如果在单个 try-catch 语句或 function-try-block 中为派生类及其部分或全部基数提供了多个处理程序,则这些处理程序应按最源于基类的顺序排序

OWASP2019-API7-c

不要让 'catch’ 块为空

OWASP2019-API8-a

防止命令注入

OWASP2019-API8-b

避免在输出控制台上打印污染的数据

OWASP2019-API8-c

防止环境注入

OWASP2019-API8-d

防止文件名注入

OWASP2019-API8-e

从格式字符串中排除未经过滤的用户输入

OWASP2019-API8-f

防止 SQL 注入

OWASP2019-API8-g

在 libxerces-c 中禁用解析 XML 外部实体(XXE)

OWASP2019-API8-h

注意确保 LoadLibrary() 将加载正确的库

OWASP2019-API8-i

避免将动态创建的字符串传递给 exec

OWASP2019-API8-j

避免将用户输入作为参数传递给方法

OWASP2019-API9-a

自由断言以记录内部假设和不变量

OWASP2019-API9-b

使用枚举时,应明确声明每个成员的值

OWASP2019-API9-c

汇编程序的所有用法都应记录

OWASP2019-API9-d

应记录浮点运算的使用

OWASP2019-API9-e

具有外部链接的对象或函数应在头文件中声明

OWASP2019-API9-f

记录整数除法

OWASP2019-API9-g

#pragma 指令的所有使用都应记录并解释

PFO-10

不要在头文件中定义多个类

PREPROC-10_b

#endif 预处理器指令将仅用于防止多次包含同一头文件

PREPROC-10_c

#if 预处理器指令将仅用于防止多次包含同一头文件

PREPROC-11_b

不应使用 #if 预处理器指令

PREPROC-25

不得使用 #undef

PREPROC-26

#ifndef、#ifdef、#if、#elif、#else 和 #endif 预处理器指令应仅用于条件文件包含和 include guards(头文件保护符)

更新规则

以下规则的输出消息已更新,因此与这些规则有关的 DTP 抑制可能不再可用:

  • PREPROC-01

我们改进了以下规则以更好地支持可能影响规则输出消息的非类型模板参数。因此,与 DTP 上的这些规则相关的抑制可能不再可用。

  • GLOBAL-TEMPLNOINST
  • GLOBAL-UNUSEDFUNC
  • GLOBAL-VIRTBASECLASS
  • GLOBAL-VIRTINDIAMOND

其他更新规则:

类别 ID

规则 IDs

AUTOSAR C++14 编码准则

AUTOSAR-A0_1_1-a, AUTOSAR-A0_1_6-a, AUTOSAR-A12_1_1-b, AUTOSAR-A12_1_5-a, AUTOSAR-A12_7_1-a, AUTOSAR-A13_2_3-a, AUTOSAR-A15_5_3-f, AUTOSAR-A16_0_1-a, AUTOSAR-A16_0_1-b, AUTOSAR-A16_0_1-c, AUTOSAR-A18_9_3-a, AUTOSAR-A1_1_1-i, AUTOSAR-A23_0_1-a, AUTOSAR-A27_0_2-a, AUTOSAR-A2_10_1-c, AUTOSAR-A2_10_1-e, AUTOSAR-A2_8_1-a, AUTOSAR-A3_1_5-a, AUTOSAR-A3_9_1-b, AUTOSAR-A5_10_1-a, AUTOSAR-A5_2_2-a, AUTOSAR-A5_2_5-a, AUTOSAR-A5_2_5-c, AUTOSAR-A7_1_1-a, AUTOSAR-A8_4_3-b, AUTOSAR-A8_4_9-a, AUTOSAR-A8_5_2-a, AUTOSAR-M0_1_2-aa, AUTOSAR-M0_1_2-ac, AUTOSAR-M0_1_2-t, AUTOSAR-M0_1_9-a, AUTOSAR-M0_3_1-d, AUTOSAR-M0_3_1-g, AUTOSAR-M15_3_1-a, AUTOSAR-M3_2_2-a, AUTOSAR-M3_2_4-a, AUTOSAR-M4_10_2-a, AUTOSAR-M5_0_15-a, AUTOSAR-M5_0_16-a, AUTOSAR-M5_0_16-b, AUTOSAR-M5_0_2-a, AUTOSAR-M5_0_4-a, AUTOSAR-M5_0_6-a, AUTOSAR-M5_0_7-a, AUTOSAR-M5_2_10-a, AUTOSAR-M6_2_3-a, AUTOSAR-M7_1_2-b, AUTOSAR-M7_1_2-c, AUTOSAR-M8_4_4-a, AUTOSAR-M8_5_2-a

流分析

BD-PB-ARRAY, BD-PB-CC, BD-PB-ERRNO, BD-PB-OVERFNZT, BD-PB-PTRARR, BD-PB-VALRANGE, BD-PB-VOVR, BD-RES-INVFREE, BD-TRS-DIFCS, BD-TRS-DLOCK

SEI CERT C

CERT_C-ARR30-a, CERT_C-ARR38-d, CERT_C-ARR39-a, CERT_C-CON31-c, CERT_C-CON35-a, CERT_C-DCL00-a, CERT_C-DCL13-a, CERT_C-DCL22-a, CERT_C-ERR30-a, CERT_C-ERR32-a, CERT_C-EXP08-b, CERT_C-EXP35-a, CERT_C-FIO37-a, CERT_C-FIO38-a, CERT_C-FLP34-a, CERT_C-INT10-a, CERT_C-INT31-a, CERT_C-MEM34-a, CERT_C-MSC19-a, CERT_C-POS30-a, CERT_C-POS47-a, CERT_C-STR03-a, CERT_C-STR31-a, CERT_C-STR32-a

SEI CERT C++

CERT_CPP-CON56-a, CERT_CPP-CTR50-a, CERT_CPP-ERR50-f, CERT_CPP-ERR58-a, CERT_CPP-STR50-b, CERT_CPP-STR53-a

编码规范

CODSTA-131, CODSTA-161_a, CODSTA-166_a, CODSTA-166_b, CODSTA-181, CODSTA-196, CODSTA-198

C++ 的编码规范

CODSTA-CPP-101, CODSTA-CPP-105, CODSTA-CPP-32, CODSTA-CPP-43, CODSTA-CPP-53, CODSTA-CPP-63, CODSTA-CPP-66, CODSTA-CPP-83, CODSTA-CPP-85

Modern C++ 的编码规范

CODSTA-MCPP-06_b, CODSTA-MCPP-26, CODSTA-MCPP-38, CODSTA-MCPP-42, CODSTA-MCPP-51

常见不足枚举

CWE-119-a, CWE-125-a, CWE-787-a

异常

EXCEPT-08

格式化

FORMAT-16

全局分析

GLOBAL-ONEDEFINLINE, GLOBAL-ONEDEFRULE, GLOBAL-ONEEXTERNDEF, GLOBAL-UNUSEDTYPE

高完整性 C++

HICPP-12_4_2-a, HICPP-12_5_2-a, HICPP-13_2_2-a, HICPP-16_1_1-b, HICPP-16_1_1-c, HICPP-17_4_1-a, HICPP-18_3_1-a, HICPP-1_2_1-i, HICPP-1_2_2-a, HICPP-1_3_1-a, HICPP-3_1_1-c, HICPP-3_1_1-e, HICPP-5_1_2-h, HICPP-5_2_1-a, HICPP-5_7_2-a, HICPP-7_1_2-a, HICPP-7_4_2-a, HICPP-8_4_2-a

初始化

INIT-06, INIT-16

Joint Strike Fighter

JSF-026, JSF-028, JSF-071_b, JSF-109, JSF-117.1, JSF-118, JSF-121, JSF-135_c, JSF-135_e, JSF-144, JSF-164, JSF-185, JSF-187

指标分析

METRIC.CC, METRIC.DIF

度量指标

METRICS-40

MISRA C 1998

MISRA-054

MISRA C 2004

MISRA2004-10_1_a, MISRA2004-10_1_d, MISRA2004-10_4, MISRA2004-12_13, MISRA2004-12_1_a, MISRA2004-13_7_aj, MISRA2004-13_7_ak, MISRA2004-14_2, MISRA2004-14_3, MISRA2004-16_7, MISRA2004-16_9, MISRA2004-17_4, MISRA2004-9_2

MISRA C++ 2008

MISRA2008-0_1_2_aa, MISRA2008-0_1_2_k, MISRA2008-0_1_2_l, MISRA2008-0_1_5, MISRA2008-0_1_6, MISRA2008-0_1_9, MISRA2008-0_3_1_a, MISRA2008-0_3_1_e, MISRA2008-15_3_1, MISRA2008-15_5_3_f, MISRA2008-16_0_3, MISRA2008-16_2_1_b, MISRA2008-16_2_1_c, MISRA2008-3_2_2, MISRA2008-3_2_4, MISRA2008-4_10_2, MISRA2008-5_0_15, MISRA2008-5_0_16_a, MISRA2008-5_0_16_b, MISRA2008-5_0_2_a, MISRA2008-5_0_4_a, MISRA2008-5_0_6_a, MISRA2008-5_0_7_b, MISRA2008-5_2_10, MISRA2008-5_2_4, MISRA2008-6_2_3, MISRA2008-7_1_1, MISRA2008-7_1_2_a, MISRA2008-7_1_2_b, MISRA2008-8_4_4, MISRA2008-8_5_2

MISRA C 2012 (Legacy)

MISRA2012-DIR-4_13_c, MISRA2012-DIR-4_13_e, MISRA2012-DIR-4_1_a, MISRA2012-DIR-4_1_e, MISRA2012-RULE-10_1_a, MISRA2012-RULE-11_9_a, MISRA2012-RULE-11_9_b, MISRA2012-RULE-14_3_za, MISRA2012-RULE-14_3_zb, MISRA2012-RULE-14_3_zc, MISRA2012-RULE-18_1_a, MISRA2012-RULE-18_1_c, MISRA2012-RULE-18_4, MISRA2012-RULE-20_5, MISRA2012-RULE-21_17_a, MISRA2012-RULE-22_10, MISRA2012-RULE-22_2_b, MISRA2012-RULE-22_5_a, MISRA2012-RULE-22_5_b, MISRA2012-RULE-22_8, MISRA2012-RULE-22_9, MISRA2012-RULE-2_2_a, MISRA2012-RULE-2_2_b, MISRA2012-RULE-8_13_a, MISRA2012-RULE-8_6, MISRA2012-RULE-9_2

MISRA C 2012

MISRAC2012-DIR_4_1-a, MISRAC2012-DIR_4_1-e, MISRAC2012-DIR_4_13-c, MISRAC2012-DIR_4_13-e, MISRAC2012-RULE_10_1-a, MISRAC2012-RULE_11_9-a, MISRAC2012-RULE_11_9-b, MISRAC2012-RULE_14_3-aa, MISRAC2012-RULE_14_3-ab, MISRAC2012-RULE_14_3-ac, MISRAC2012-RULE_18_1-a, MISRAC2012-RULE_18_1-c, MISRAC2012-RULE_18_4-a, MISRAC2012-RULE_20_5-a, MISRAC2012-RULE_21_17-a, MISRAC2012-RULE_22_10-a, MISRAC2012-RULE_22_2-b, MISRAC2012-RULE_22_5-a, MISRAC2012-RULE_22_5-b, MISRAC2012-RULE_22_8-a, MISRAC2012-RULE_22_9-a, MISRAC2012-RULE_2_2-a, MISRAC2012-RULE_2_2-b, MISRAC2012-RULE_8_13-a, MISRAC2012-RULE_8_6-a, MISRAC2012-RULE_9_2-a

命名规范

NAMING-32

优化

OPT-05, OPT-25

OWASP 十大最关键的 Web 应用程序安全风险(2017)

OWASP2017-A6-c

预处理器

PREPROC-10, PREPROC-11

安全性

SECURITY-43

删除规则

删除了以下规则以提高结果的准确性:

类别 ID

规则 IDs

AUTOSAR C++14 编码准则

AUTOSAR-A3_9_1-a, AUTOSAR-M5_0_4-b

高完整性 C++

HICPP-17_3_5-b

MISRA C 2004

MISRA2004-10_1_h

MISRA C++ 2008

MISRA2008-5_0_4_b

  • No labels