Annotate false positives for Coverity Scan
There are only two defects reported by the Coverity Scan, both false positives:
Error: MISSING_LOCK (CWE-667):
evolution-etesync-master/src/addressbook/e-book-backend-etesync.c:644: missing_lock: Accessing "bbetesync->priv->fetch_from_server" without holding lock "_EBookBackendEteSyncPrivate.etesync_lock". Elsewhere, "_EBookBackendEteSyncPrivate.fetch_from_server" is accessed with "_EBookBackendEteSyncPrivate.etesync_lock" held 4 out of 5 times.
evolution-etesync-master/src/addressbook/e-book-backend-etesync.c:344: example_lock: Example 1: Locking "_EBookBackendEteSyncPrivate.etesync_lock".
evolution-etesync-master/src/addressbook/e-book-backend-etesync.c:425: example_access: Example 1 (cont.): "_EBookBackendEteSyncPrivate.fetch_from_server" is accessed with lock "_EBookBackendEteSyncPrivate.etesync_lock" held.
evolution-etesync-master/src/addressbook/e-book-backend-etesync.c:344: example_lock: Example 2: Locking "_EBookBackendEteSyncPrivate.etesync_lock".
evolution-etesync-master/src/addressbook/e-book-backend-etesync.c:427: example_access: Example 2 (cont.): "_EBookBackendEteSyncPrivate.fetch_from_server" is accessed with lock "_EBookBackendEteSyncPrivate.etesync_lock" held.
evolution-etesync-master/src/addressbook/e-book-backend-etesync.c:513: example_lock: Example 3: Locking "_EBookBackendEteSyncPrivate.etesync_lock".
evolution-etesync-master/src/addressbook/e-book-backend-etesync.c:569: example_access: Example 3 (cont.): "_EBookBackendEteSyncPrivate.fetch_from_server" is accessed with lock "_EBookBackendEteSyncPrivate.etesync_lock" held.
evolution-etesync-master/src/addressbook/e-book-backend-etesync.c:513: example_lock: Example 4: Locking "_EBookBackendEteSyncPrivate.etesync_lock".
evolution-etesync-master/src/addressbook/e-book-backend-etesync.c:571: example_access: Example 4 (cont.): "_EBookBackendEteSyncPrivate.fetch_from_server" is accessed with lock "_EBookBackendEteSyncPrivate.etesync_lock" held.
# 642| bbetesync->priv->connection = NULL;
# 643| bbetesync->priv->col_obj = NULL;
# 644|-> bbetesync->priv->fetch_from_server = TRUE;
# 645| bbetesync->priv->preloaded_add = NULL;
# 646| bbetesync->priv->preloaded_modify = NULL;
Error: MISSING_LOCK (CWE-667):
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:784: missing_lock: Accessing "cbetesync->priv->fetch_from_server" without holding lock "_ECalBackendEteSyncPrivate.etesync_lock". Elsewhere, "_ECalBackendEteSyncPrivate.fetch_from_server" is accessed with "_ECalBackendEteSyncPrivate.etesync_lock" held 6 out of 7 times.
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:367: example_lock: Example 1: Locking "_ECalBackendEteSyncPrivate.etesync_lock".
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:460: example_access: Example 1 (cont.): "_ECalBackendEteSyncPrivate.fetch_from_server" is accessed with lock "_ECalBackendEteSyncPrivate.etesync_lock" held.
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:510: example_lock: Example 2: Locking "_ECalBackendEteSyncPrivate.etesync_lock".
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:592: example_access: Example 2 (cont.): "_ECalBackendEteSyncPrivate.fetch_from_server" is accessed with lock "_ECalBackendEteSyncPrivate.etesync_lock" held.
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:510: example_lock: Example 3: Locking "_ECalBackendEteSyncPrivate.etesync_lock".
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:594: example_access: Example 3 (cont.): "_ECalBackendEteSyncPrivate.fetch_from_server" is accessed with lock "_ECalBackendEteSyncPrivate.etesync_lock" held.
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:643: example_lock: Example 4: Locking "_ECalBackendEteSyncPrivate.etesync_lock".
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:701: example_access: Example 4 (cont.): "_ECalBackendEteSyncPrivate.fetch_from_server" is accessed with lock "_ECalBackendEteSyncPrivate.etesync_lock" held.
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:643: example_lock: Example 5: Locking "_ECalBackendEteSyncPrivate.etesync_lock".
evolution-etesync-master/src/calendar/e-cal-backend-etesync.c:703: example_access: Example 5 (cont.): "_ECalBackendEteSyncPrivate.fetch_from_server" is accessed with lock "_ECalBackendEteSyncPrivate.etesync_lock" held.
# 782| cbetesync->priv->connection = NULL;
# 783| cbetesync->priv->col_obj = NULL;
# 784|-> cbetesync->priv->fetch_from_server = TRUE;
# 785| cbetesync->priv->preloaded_add = NULL;
# 786| cbetesync->priv->preloaded_modify = NULL;
I asked the people whom know the Coverity internals and I've been told that Coverity is not that smart to know it's the only place where the variable cannot be accessed from multipleplaces (thinking of it, it would be pretty hard to achieve).
Luckily, it's possible to annotate the place for Coverity, which will make the test result empty. It's as simple as adding /* coverity[missing_lock] */
on the line preceding identified expression. In this case:
cbetesync->priv->col_obj = NULL;
+ /* coverity[missing_lock] */
cbetesync->priv->fetch_from_server = TRUE;
cbetesync->priv->preloaded_add = NULL;
I did not want to commit it before we sort out the branch naming and without letting you know beforehand.