aboutsummaryrefslogtreecommitdiff
path: root/src/backend/port/dynloader
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2000-12-18 18:45:05 +0000
committerBruce Momjian <bruce@momjian.us>2000-12-18 18:45:05 +0000
commit1f159e562b2a31234edba781218ce5278ea2cfd8 (patch)
tree347b6c792b54d1d2e16c156bc0f5b6b09a4bacc8 /src/backend/port/dynloader
parent5491233f5245c464be2286ad894448b21ef757db (diff)
downloadpostgresql-1f159e562b2a31234edba781218ce5278ea2cfd8.tar.gz
postgresql-1f159e562b2a31234edba781218ce5278ea2cfd8.zip
>> Here is a patch for the beos port (All regression tests are OK).
>> xlog.c : special case for beos to avoid 'link' which does not work yet >> beos/sem.c : implementation of new sem_ctl call (GETPID) and a new >sem_op >> flag (IPCNOWAIT) >> dynloader/beos.c : add a verification of symbol validity (seem that the >> loader sometime return OK with an invalid symbol) >> postmaster.c : add beos forking support for the new checkpoint process >> postgres.c : remove beos special case for getrusage >> beos.h : Correction of a bas definition of AF_UNIX, misc defnitions >> >> >> thanks >> >> >> cyril Cyril VELTER
Diffstat (limited to 'src/backend/port/dynloader')
-rw-r--r--src/backend/port/dynloader/beos.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/backend/port/dynloader/beos.c b/src/backend/port/dynloader/beos.c
index ea97057e620..2a516e66c61 100644
--- a/src/backend/port/dynloader/beos.c
+++ b/src/backend/port/dynloader/beos.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/dynloader/Attic/beos.c,v 1.3 2000/10/07 14:39:11 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/dynloader/Attic/beos.c,v 1.4 2000/12/18 18:45:04 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -51,6 +51,11 @@ pg_dlsym(void *handle, char *funcname)
/* Loading symbol */
if(get_image_symbol(*((int*)(handle)),funcname,B_SYMBOL_TYPE_TEXT,(void**)&fpt)==B_OK);
{
+ /* Sometime the loader return B_OK for an inexistant function with an invalid address !!!
+ Check that the return address is in the image range */
+ image_info info;
+ get_image_info(*((int*)(handle)),&info);
+ if ((fpt<info.text) || (fpt>=(info.text+info.text_size))) return NULL;
return fpt;
}
elog(NOTICE, "loading symbol '%s' failed ",funcname);