https://origsvn.digium.com/svn/asterisk/trunk
................
r182450 | tilghman | 2009-03-17 00:51:54 -0500 (Tue, 17 Mar 2009) | 14 lines
Merged revisions 182449 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r182449 | tilghman | 2009-03-17 00:50:52 -0500 (Tue, 17 Mar 2009) | 7 lines
Fix race in astdb
The underlying db1 implementation does not fully isolate the pages retrieved
from astdb, so the lock protecting accesses needs to be extended until the
copy from the shared memory structure is done.
(closes issue #14682)
Reported by: makoto
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@182452
65c4cc65-6c06-0410-ace0-
fbb531ad65f3
memset(value, 0, valuelen);
key.data = fullkey;
key.size = fullkeylen + 1;
-
+
res = astdb->get(astdb, &key, &data, 0);
-
- ast_mutex_unlock(&dblock);
/* Be sure to NULL terminate our data either way */
if (res) {
ast_log(LOG_NOTICE, "Strange, empty value for /%s/%s\n", family, keys);
}
}
+
+ /* Data is not fully isolated for concurrency, so the lock must be extended
+ * to after the copy to the output buffer. */
+ ast_mutex_unlock(&dblock);
+
return res;
}