Hello Joel,

Am 23.02.21 um 16:23 schrieb Joel Sherrill:
Hi

Ryan has wandered into the land of third party code and Coverity issues. It is not a very welcoming land and we need to decide what we want to do as a project. I put one

In these cases, we have a few patterns to fall back on. There are basically a few choices here:

+ ignore third party code in Coverity. I'm not a fan since we still have code with issues.

Depends a bit on the third party code and the types of Coverity errors. But in general you are right: It's not a good solution.


  + Do the minimum which is often just adding (void) in front of the call not checking a return code..Still wrap in #ifdef __rtems__ as below with a more robust solution.

+ Add #ifdef __rtems__ so the original code and rtems changes are side by side. This is more like what we do with libbsd. But I would still tend to use the correct fix and not just slap a (void) in front. If we are going to modify the file, we might as well fix it.

#ifdef __rtems__
    rc = XXX
    _Assert_Unused_variable_equals'
#else
    XXX
#endif

Any other options? Opinions.

Best option would be to fix it upstream (regardless whether it's a real bug or a false positive) and update our copy of the code.

If that is not an option (patches not accepted; running out of time; some other reason) I think it needs a case by case analysis:

Is it really a potential problem or is it a false positive of Coverity.

1) If it is a false positive we have two conflicting interests:

a) Have as few changes as possible so that we can easily upgrade third party code to newer versions.

b) Have as few Coverity warnings as possible.

If possible I would rather disable specific warnings for specific third party files (or on a function level - is that possible?) rather then adding complexity to upgrades. Otherwise we might tend to rather not do an upgrade because it's too much work to re-integrate all the patches.

2) If it is not a false positive it should be definitively fixed (and not only masked with a (void)). In that case I think the #if(n)def __rtems__ like in libbsd is a good solution to make updates as simple as possible.

Best regards

Christian


--joel

============================
  CID 1047324: Unchecked return value in fdt_add_subnode_namelen().

Closes #4256
---
cpukit/dtc/libfdt/fdt_rw.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cpukit/dtc/libfdt/fdt_rw.c b/cpukit/dtc/libfdt/fdt_rw.c
index 1385425..ceeeb44 100644
--- a/cpukit/dtc/libfdt/fdt_rw.c
+++ b/cpukit/dtc/libfdt/fdt_rw.c
@@ -348,7 +348,7 @@ int fdt_add_subnode_namelen(void *fdt, int parentoffset,
return offset;
/* Try to place the new node after the parent's properties */
- fdt_next_tag(fdt, parentoffset, &nextoffset); /* skip the BEGIN_NODE */
+ (void)fdt_next_tag(fdt, parentoffset, &nextoffset); /* skip the BEGIN_NODE */
do {
offset = nextoffset;
tag = fdt_next_tag(fdt, offset, &nextoffset);
--
1.8.3.1

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


--
--------------------------------------------
embedded brains GmbH
Herr Christian MAUDERER
Dornierstr. 4
82178 Puchheim
Germany
email: christian.maude...@embedded-brains.de
phone: +49-89-18 94 741 - 18
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to