Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Coverity issues #467

Open
76 tasks done
Danielius1922 opened this issue Jun 13, 2023 · 0 comments · Fixed by #478, #474, #473, #472 or #465
Open
76 tasks done

Coverity issues #467

Danielius1922 opened this issue Jun 13, 2023 · 0 comments · Fixed by #478, #474, #473, #472 or #465
Assignees
Labels
bug Something isn't working

Comments

@Danielius1922
Copy link
Member

Danielius1922 commented Jun 13, 2023

Coverity issues reported by https://scan.coverity.com/projects/iotivity-iotivity-lite?tab=overview (or by other developers running custom coverity scans):

Internal nightly scan

Impact: High

Version: b2b66ef

  • Out-of-bounds write (321043, storage.c:120)

Version: 9415446

  • Resource leak (319261, security/oc_roles.c:152)
  • Resource leak (319258, security/oc_obt.c:2097)
  • Resource leak (319254, api/cloud/oc_cloud_deregister.c:307)
  • Resource leak (319252, messaging/coap/separate.c:160)
  • Resource leak (319251, security/oc_oscore_context.c:147)
  • Resource leak (319246, security/oc_obt.c:1335)
  • Resource leak (319244, messaging/coap/oscore.c:64)
  • Out-of-bounds access (319243, observe.c:508)
  • Destination buffer too small (319240, apps/cloud_proxy.c:1360)
  • Out-of-bounds access (319239, security/oc_obt.c:1113)
  • Resource leak (319234, apps/cloud_proxy.c:1366)
  • Out-of-bounds access (319233, messaging/coap/oscore.c:305)
  • Resource leak (319232, security/oc_obt.c:1609)
  • Resource leak (319231, security/oc_obt.c:1171)
  • Out-of-bounds access (319229, security/oc_obt.c:1296)
  • Uninitialized scalar variable (319228, security/oc_obt.c:488)
  • Out-of-bounds access (319227, security/oc_obt.c:1057)
  • Out-of-bounds access (319225, messaging/coap/oscore.c:288)
  • Resource leak (319222, security/oc_obt.c:2630)
  • Copy of overlapping memory (319221, security/oc_tls.c:2786)
  • Out-of-bounds access (319217, security/oc_cred.c:996)
  • Resource leak (319216, security/oc_obt.c:903)
  • Resource leak (319214, python/oc_python.c:1442)
  • Uninitialized scalar variable (319210, security/oc_oscore_engine.c:256)
  • Resource leak (319207, security/oc_obt.c:2043)
  • String not null terminated (319205, apps/cloud_server.c:902)
  • Resource leak (319204, messaging/coap/engine.c:133)
  • Resource leak (319203, security/oc_obt.c:2258)

Impact: Medium

  • Logically dead code (319262, port/linux/ipadapter.c:897)
  • Truncated stdio return value (319256, apps/server_rules.c)
  • Unchecked return value from library (319255, apps/simpleserver-resourcedefaults.c:1191)
  • Argument cannot be negative (319253, apps/server_certification_tests.c:576)
  • Logically dead code (319248, security/oc_tls.c:2341)
  • Unchecked return value (319247, apps/simpleserver_pki.c:436)
  • Unchecked return value (319242, api/cloud/oc_cloud_resource.c:127)
  • Unchecked return value (319236, api/cloud/oc_cloud_resource.c:176)
  • Untrusted loop bound (319224, onboarding_tool/obtmain.c:1626)
  • Dereference after null check (319218, apps/cloud_proxy.c:1598)
  • Untrusted loop bound (319215, port/linux/ipadapter.c:896)
  • Untrusted loop bound (319213, port/linux/tcpsession.c:441)
  • Constant expression result (319212, security/oc_tls.c:2339)
  • Dereference before null check (319211, api/oc_collection.c:914)
  • Unchecked return value from library (319209, apps/smart_home_server_linux.c:72)
  • Unchecked return value (319206 , apps/simpleserver_pki.c:438)

Impact: Low

  • Copy into fixed size buffer (319263, apps/cloud_proxy.c:1138)
  • 'Constant' variable guards dead code (319260, apps/simpleserver-resourcedefaults.c:475)
  • 'Constant' variable guards dead code (319257, apps/cloud_proxy.c:564)
  • Copy into fixed size buffer (319250, security/oc_obt.c:2270)
  • Copy into fixed size buffer (319241, apps/server_rules.c:704)
  • 'Constant' variable guards dead code (319237, apps/server_certification_tests.c:1298)
  • Copy into fixed size buffer (319235, apps/cloud_proxy.c:1238)
  • Calling risky function (319230, apps/client_certification_tests.c:835)
  • Copy into fixed size buffer (319226, apps/cloud_proxy.c:1061)
  • Copy into fixed size buffer (319223, python/oc_python.c:1926)
  • Copy into fixed size buffer (319220, apps/push_configurator_multithread_linux.c:342)
  • Copy into fixed size buffer (319219, apps/server_rules.c:667)

Reported by other teams

Impact: High

  • Out-of-bounds access (55558, coap_remove_observer_by_resource, messaging/coap/observe.c:404)
    Trace
  • Out-of-bounds access (55593, security/oc_tls.c:2750)
    Trace
  • Uninitialized scalar variable (55709, security/oc_tls.c:488)
    Trace
    Duplicate of 319228
  • Use of 32-bit time_t (55774, port/linux/clock.c:58)
    Trace
  • Out-of-bounds access (55868, coap_remove_observer_by_resource, messaging/coap/observe.c:404)
    Trace

Impact: Medium

  • Logically dead code (55766, security/oc_tls.c:2305)
    Trace
  • Logically dead code (55687, port/linux/ipadapter.c:1088)
    Trace
  • Unintentional integer overflow (55943, port/linux/tcpsession.c:1241)
    Trace
  • Unintentional integer overflow (55938, port/linux/tcpsession.c:1241)
    Trace
  • Unintended sign extension (55942, port/linux/tcpsession.c:1249)
    Trace
  • Unintended sign extension (55937, port/linux/tcpsession.c:1171)
    Trace
  • Unintended sign extension (55910, api/oc_server_api.c:844)
    Trace
  • Overflowed return value (55864, security/oc_certs.c:103)
    Trace
  • Overflowed return value (55610, security/oc_certs.c:136)
    Trace
          133 bool
          134 oc_sec_certs_ecp_group_id_is_allowed(mbedtls_ecp_group_id gid)
          135 {
            1. Condition gid != MBEDTLS_ECP_DP_NONE, taking false branch.
     	  2. overflow: Subtract operation overflows on operands gid and 1U.
            CID 55610 (#5 of 5): Overflowed return value (INTEGER_OVERFLOW)
            3. overflow_sink: Overflowed or truncated value (or a value computed from an overflowed or truncated value) gid !=         MBEDTLS_ECP_DP_NONE && ((1 << gid - 1U) & g_allowed_ecp_grpids_mask) != 0U used as return value.
          136   return gid != MBEDTLS_ECP_DP_NONE &&
          137          (MBEDTLS_X509_ID_FLAG(gid) & g_allowed_ecp_grpids_mask) != 0;
          138 }
      
  • Unchecked return value (55650, api/cloud/oc_cloud_resource.c:174)
    Trace
  • Unchecked return value (55781, security/oc_obt.c:626)
    Trace
  • Dereference before null check (55782, api/oc_collection.c:914)
    Trace
  • Explicit null dereferenced
    Trace
          260 int
          261 oc_sec_sdi_encode(size_t device, oc_interface_mask_t iface_mask)
          262 {
          263  const oc_sec_sdi_t *sdi = oc_sec_sdi_get(device);
              1. assign_zero: Assigning: sdi_res = NULL.
          264  const oc_resource_t *sdi_res = NULL;
     	        2. Condition (iface_mask & OC_IF_BASELINE) != 0, taking false branch.
          265   if ((iface_mask & OC_IF_BASELINE) != 0) {
          266     sdi_res = oc_core_get_resource_by_index(OCF_SEC_SDI, device);
          267   }
     	        CID 57077 (#1 of 1): Explicit null dereferenced (FORWARD_NULL)
          	3. var_deref_model: Passing null pointer sdi_res to oc_sec_sdi_encode_with_resource, which dereferences it.
          268    return oc_sec_sdi_encode_with_resource(sdi, sdi_res, iface_mask);
          269  }
      
  • Bad comparison of floating-point expressions
    Trace
          279  // tag-pos-rel
          280  const double *pos = resource->tag_pos_rel;  	
              CID 57076 (#1-3 of 3): Bad comparison of floating-point expressions (FLOATING_POINT_EQUALITY)
              1. floating_point_equality: Floating point expression pos[0] is compared using operator !=.
          281  if (pos[0] != 0 || pos[1] != 0 || pos[2] != 0) {
          282    oc_rep_set_key(oc_rep_object(link), "tag-pos-rel");
          283    oc_rep_start_array(oc_rep_object(link), tag_pos_rel);
          284    oc_rep_add_double(tag_pos_rel, pos[0]);
          285    oc_rep_add_double(tag_pos_rel, pos[1]);
          286    oc_rep_add_double(tag_pos_rel, pos[2]);
          287    oc_rep_end_array(oc_rep_object(link), tag_pos_rel);
          288  }
      
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment