162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/// 362306a36Sopenharmony_ci/// From Documentation/filesystems/sysfs.rst: 462306a36Sopenharmony_ci/// show() must not use snprintf() when formatting the value to be 562306a36Sopenharmony_ci/// returned to user space. If you can guarantee that an overflow 662306a36Sopenharmony_ci/// will never happen you can use sprintf() otherwise you must use 762306a36Sopenharmony_ci/// scnprintf(). 862306a36Sopenharmony_ci/// 962306a36Sopenharmony_ci// Confidence: High 1062306a36Sopenharmony_ci// Copyright: (C) 2020 Denis Efremov ISPRAS 1162306a36Sopenharmony_ci// Options: --no-includes --include-headers 1262306a36Sopenharmony_ci// 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_civirtual report 1562306a36Sopenharmony_civirtual org 1662306a36Sopenharmony_civirtual context 1762306a36Sopenharmony_civirtual patch 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci@r depends on !patch@ 2062306a36Sopenharmony_ciidentifier show, dev, attr, buf; 2162306a36Sopenharmony_ciposition p; 2262306a36Sopenharmony_ci@@ 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cissize_t show(struct device *dev, struct device_attribute *attr, char *buf) 2562306a36Sopenharmony_ci{ 2662306a36Sopenharmony_ci <... 2762306a36Sopenharmony_ci* return snprintf@p(...); 2862306a36Sopenharmony_ci ...> 2962306a36Sopenharmony_ci} 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci@rp depends on patch@ 3262306a36Sopenharmony_ciidentifier show, dev, attr, buf; 3362306a36Sopenharmony_ci@@ 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_cissize_t show(struct device *dev, struct device_attribute *attr, char *buf) 3662306a36Sopenharmony_ci{ 3762306a36Sopenharmony_ci <... 3862306a36Sopenharmony_ci return 3962306a36Sopenharmony_ci- snprintf 4062306a36Sopenharmony_ci+ scnprintf 4162306a36Sopenharmony_ci (...); 4262306a36Sopenharmony_ci ...> 4362306a36Sopenharmony_ci} 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci@script: python depends on report@ 4662306a36Sopenharmony_cip << r.p; 4762306a36Sopenharmony_ci@@ 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cicoccilib.report.print_report(p[0], "WARNING: use scnprintf or sprintf") 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci@script: python depends on org@ 5262306a36Sopenharmony_cip << r.p; 5362306a36Sopenharmony_ci@@ 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_cicoccilib.org.print_todo(p[0], "WARNING: use scnprintf or sprintf") 56