@gordonmessmer commented on this pull request.


> +/*
+ * Rather than re-implement path searching for shared objects, use
+ * dlmopen().  This will still perform initialization and finalization
+ * functions, which isn't necessarily safe, so do that in a separate
+ * process.
+ */
+static char *getLibtoolVerFromShLink(const char *filename)
+{
+    char dest[PATH_MAX];
+    int pipefd[2];
+    pid_t cpid;
+
+    if (pipe(pipefd) == -1) {
+       return NULL;  // Should this be a fatal error instead?
+    }
+    cpid = fork();

There is a brief comment before getLibtoolVerFromShLink, but I can move it or 
expand it with more detail, at your preference.

Note: The problem does occur when processing a single file, because this new 
process is calling dlopen() on each object in the dynamic table of the file 
being processed.  So, if a file is linked to libsoup3, for example, elfdeps 
will dlopen() libsoup and then later dlopen() libgobject.  Each handle is 
passed to dlinfo() and then the resulting linkmap->l_name is processed.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2372#discussion_r1097010807
You are receiving this because you are subscribed to this thread.

Message ID: <rpm-software-management/rpm/pull/2372/review/1284648...@github.com>
_______________________________________________
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint

Reply via email to