#define MAX_SCRIPTLETS 9
+// The maximum number of symlinks to follow when reading a file from an archive
+#define MAX_FOLLOW_SYMLINKS 10
+
struct pakfire_archive {
struct pakfire* pakfire;
int nrefs;
// Some flags
int flags;
+
+ // Count how many symlinks we have followed
+ unsigned int followed_symlinks;
};
static ssize_t __pakfire_archive_cookie_read(void* c, char* buffer, size_t size) {
if (r)
return PAKFIRE_WALK_ERROR;
+ // Increment counter
+ if (++cookie->followed_symlinks >= MAX_FOLLOW_SYMLINKS) {
+ ERROR(pakfire, "Reached maximum number of symlinks to follow\n");
+ return PAKFIRE_WALK_ERROR;
+ }
+
return PAKFIRE_WALK_AGAIN;
}