Import rpm: 9ddcacfbf75bdb17f97f6ecba5dc66c8413cab1c

This commit is contained in:
James Antill 2022-08-08 12:28:02 -04:00
commit 39709e399d
21 changed files with 13594 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
SOURCES/gimp-2.8.22.tar.bz2

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: desktop-qe.desktop-ci.tier1-gating.functional}

View File

@ -0,0 +1,25 @@
diff -up gimp-2.10.14/etc/gimprc.in.cm-system-monitor-profile-by-default gimp-2.10.14/etc/gimprc.in
--- gimp-2.10.14/etc/gimprc.in.cm-system-monitor-profile-by-default 2019-10-26 21:46:48.000000000 +0200
+++ gimp-2.10.14/etc/gimprc.in 2019-11-04 13:17:23.322750636 +0100
@@ -317,9 +317,9 @@
# Defines the color management behavior. This is a parameter list.
#
-# (color-management
+(color-management
# (mode display)
-# (display-profile-from-gdk no)
+ (display-profile-from-gdk no)
# (display-rendering-intent relative-colorimetric)
# (display-use-black-point-compensation yes)
# (display-optimize yes)
@@ -328,7 +328,8 @@
# (simulation-optimize yes)
# (simulation-gamut-check no)
# (out-of-gamut-color (color-rgb 1 0 1))
-# (display-module "CdisplayLcms"))
+# (display-module "CdisplayLcms")
+)
# Keep a permanent record of all opened and saved files in the Recent
# Documents list. Possible values are yes and no.

View File

@ -0,0 +1,12 @@
diff -urNp a/etc/gimprc.in b/etc/gimprc.in
--- a/etc/gimprc.in 2019-08-20 13:03:43.195089141 +0200
+++ b/etc/gimprc.in 2019-08-20 13:04:09.109353485 +0200
@@ -153,7 +153,7 @@
# Where to look for fonts in addition to the system-wide installed fonts.
# This is a colon-separated list of folders to search.
#
-# (font-path "${gimp_dir}/fonts:${gimp_data_dir}/fonts")
+(font-path "${gimp_dir}/fonts")
# Specify a default brush. The brush is searched for in the specified brush
# path. This is a string value.

View File

@ -0,0 +1,12 @@
diff -up gimp-2.10.18/etc/gimprc.in.no-phone-home-default gimp-2.10.18/etc/gimprc.in
--- gimp-2.10.18/etc/gimprc.in.no-phone-home-default 2020-02-23 21:15:47.217777581 +0100
+++ gimp-2.10.18/etc/gimprc.in 2020-02-23 21:22:42.416162110 +0100
@@ -393,7 +393,7 @@
# Check for availability of GIMP updates through background internet queries.
# Possible values are yes and no.
#
-# (check-updates yes)
+(check-updates no)
# Timestamp of the last update check. (null)
#

View File

@ -0,0 +1,12 @@
diff -up gimp-2.10.24/etc/gimprc.in.external-help-browser gimp-2.10.24/etc/gimprc.in
--- gimp-2.10.24/etc/gimprc.in.external-help-browser 2021-04-03 00:02:39.312656132 +0200
+++ gimp-2.10.24/etc/gimprc.in 2021-04-03 00:03:27.360453285 +0200
@@ -836,7 +836,7 @@
# Sets the browser used by the help system. Possible values are gimp and
# web-browser.
#
-# (help-browser web-browser)
+(help-browser web-browser)
# When enabled, a search of actions will also return inactive actions.
# Possible values are yes and no.

View File

@ -0,0 +1,48 @@
From 9a3f047f90a79e96af54a73090313a670b2685d3 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Mon, 19 Nov 2012 18:26:16 +0100
Subject: [PATCH] patch: cm-system-monitor-profile-by-default
Squashed commit of the following:
commit 1430096d27ba12566739fadf96302c9a4ce8f98b
Author: Nils Philippsen <nils@redhat.com>
Date: Mon Nov 19 18:25:28 2012 +0100
color mgmt: fix syntax error
commit eb78c3a0cfd7ff796110fcd3cd161ca11005fca5
Author: Richard Hughes <hughsient@gmail.com>
Date: Thu Nov 15 12:12:12 2012 +0100
color mgmt: try to use the system monitor profile by default
---
etc/gimprc | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/etc/gimprc b/etc/gimprc
index 8306571..1511cd6 100644
--- a/etc/gimprc
+++ b/etc/gimprc
@@ -285,14 +285,15 @@
# Defines the color management behavior. This is a parameter list.
#
-# (color-management
+(color-management
# (mode display)
-# (display-profile-from-gdk no)
+ (display-profile-from-gdk yes)
# (display-rendering-intent perceptual)
# (simulation-rendering-intent perceptual)
# (simulation-gamut-check no)
# (out-of-gamut-color (color-rgb 0.501961 0.501961 0.501961))
-# (display-module "CdisplayLcms"))
+# (display-module "CdisplayLcms")
+)
# How to handle embedded color profiles when opening a file. Possible values
# are ask, keep and convert.
--
1.7.11.7

View File

@ -0,0 +1,13 @@
diff -urNp old/plug-ins/common/file-gbr.c new/plug-ins/common/file-gbr.c
--- old/plug-ins/common/file-gbr.c 2018-01-04 12:13:17.553757864 +0100
+++ new/plug-ins/common/file-gbr.c 2018-01-04 12:18:01.723635742 +0100
@@ -443,7 +443,8 @@ load_image (const gchar *filename,
{
gchar *temp = g_new (gchar, bn_size);
- if ((read (fd, temp, bn_size)) < bn_size)
+ if ((read (fd, temp, bn_size)) < bn_size ||
+ temp[bn_size - 1] != '\0')
{
g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
_("Error in GIMP brush file '%s'"),

View File

@ -0,0 +1,130 @@
diff -urNp old/plug-ins/file-fli/fli.c new/plug-ins/file-fli/fli.c
--- old/plug-ins/file-fli/fli.c 2018-01-04 12:19:54.714139464 +0100
+++ new/plug-ins/file-fli/fli.c 2018-01-04 12:34:18.568323629 +0100
@@ -25,6 +25,8 @@
#include "config.h"
+#include <glib/gstdio.h>
+
#include <string.h>
#include <stdio.h>
@@ -461,23 +463,27 @@ void fli_read_brun(FILE *f, s_fli_header
unsigned short yc;
unsigned char *pos;
for (yc=0; yc < fli_header->height; yc++) {
- unsigned short xc, pc, pcnt;
+ unsigned short pc, pcnt;
+ size_t n, xc;
pc=fli_read_char(f);
xc=0;
pos=framebuf+(fli_header->width * yc);
+ n=(size_t)fli_header->width * (fli_header->height-yc);
for (pcnt=pc; pcnt>0; pcnt--) {
unsigned short ps;
ps=fli_read_char(f);
if (ps & 0x80) {
unsigned short len;
- for (len=-(signed char)ps; len>0; len--) {
+ for (len=-(signed char)ps; len>0 && xc<n; len--) {
pos[xc++]=fli_read_char(f);
}
} else {
unsigned char val;
+ size_t len;
+ len=MIN(n-xc,ps);
val=fli_read_char(f);
- memset(&(pos[xc]), val, ps);
- xc+=ps;
+ memset(&(pos[xc]), val, len);
+ xc+=len;
}
}
}
@@ -564,25 +570,34 @@ void fli_read_lc(FILE *f, s_fli_header *
memcpy(framebuf, old_framebuf, fli_header->width * fli_header->height);
firstline = fli_read_short(f);
numline = fli_read_short(f);
+ if (numline > fli_header->height || fli_header->height-numline < firstline)
+ return;
+
for (yc=0; yc < numline; yc++) {
- unsigned short xc, pc, pcnt;
+ unsigned short pc, pcnt;
+ size_t n, xc;
pc=fli_read_char(f);
xc=0;
pos=framebuf+(fli_header->width * (firstline+yc));
+ n=(size_t)fli_header->width * (fli_header->height-firstline-yc);
for (pcnt=pc; pcnt>0; pcnt--) {
unsigned short ps,skip;
skip=fli_read_char(f);
ps=fli_read_char(f);
- xc+=skip;
+ xc+=MIN(n-xc,skip);
if (ps & 0x80) {
unsigned char val;
+ size_t len;
ps=-(signed char)ps;
val=fli_read_char(f);
- memset(&(pos[xc]), val, ps);
- xc+=ps;
+ len=MIN(n-xc,ps);
+ memset(&(pos[xc]), val, len);
+ xc+=len;
} else {
- fread(&(pos[xc]), ps, 1, f);
- xc+=ps;
+ size_t len;
+ len=MIN(n-xc,ps);
+ fread(&(pos[xc]), len, 1, f);
+ xc+=len;
}
}
}
@@ -689,7 +704,8 @@ void fli_read_lc_2(FILE *f, s_fli_header
yc=0;
numline = fli_read_short(f);
for (lc=0; lc < numline; lc++) {
- unsigned short xc, pc, pcnt, lpf, lpn;
+ unsigned short pc, pcnt, lpf, lpn;
+ size_t n, xc;
pc=fli_read_short(f);
lpf=0; lpn=0;
while (pc & 0x8000) {
@@ -700,26 +716,30 @@ void fli_read_lc_2(FILE *f, s_fli_header
}
pc=fli_read_short(f);
}
+ yc=MIN(yc, fli_header->height);
xc=0;
pos=framebuf+(fli_header->width * yc);
+ n=(size_t)fli_header->width * (fli_header->height-yc);
for (pcnt=pc; pcnt>0; pcnt--) {
unsigned short ps,skip;
skip=fli_read_char(f);
ps=fli_read_char(f);
- xc+=skip;
+ xc+=MIN(n-xc,skip);
if (ps & 0x80) {
unsigned char v1,v2;
ps=-(signed char)ps;
v1=fli_read_char(f);
v2=fli_read_char(f);
- while (ps>0) {
+ while (ps>0 && xc+1<n) {
pos[xc++]=v1;
pos[xc++]=v2;
ps--;
}
} else {
- fread(&(pos[xc]), ps, 2, f);
- xc+=ps << 1;
+ size_t len;
+ len=MIN((n-xc)/2,ps);
+ fread(&(pos[xc]), len, 2, f);
+ xc+=len << 1;
}
}
if (lpf) pos[xc]=lpn;

View File

@ -0,0 +1,25 @@
diff -urNp old/plug-ins/common/file-tga.c new/plug-ins/common/file-tga.c
--- old/plug-ins/common/file-tga.c 2018-01-04 12:36:22.333754882 +0100
+++ new/plug-ins/common/file-tga.c 2018-01-04 12:40:46.943070295 +0100
@@ -564,12 +564,17 @@ load_image (const gchar *filename,
}
break;
case TGA_TYPE_COLOR:
- if (info.bpp != 15 && info.bpp != 16 &&
- info.bpp != 24 && info.bpp != 32)
+ if ((info.bpp != 15 && info.bpp != 16 &&
+ info.bpp != 24 && info.bpp != 32) ||
+ ((info.bpp == 15 || info.bpp == 24) &&
+ info.alphaBits != 0) ||
+ (info.bpp == 16 && info.alphaBits != 1 &&
+ info.alphaBits != 0) ||
+ (info.bpp == 32 && info.alphaBits != 8))
{
- g_message ("Unhandled sub-format in '%s' (type = %u, bpp = %u)",
+ g_message ("Unhandled sub-format in '%s' (type = %u, bpp = %u, alpha = %u)",
gimp_filename_to_utf8 (filename),
- info.imageType, info.bpp);
+ info.imageType, info.bpp, info.alphaBits);
return -1;
}
break;

View File

@ -0,0 +1,16 @@
diff -urNp old/plug-ins/common/file-psp.c new/plug-ins/common/file-psp.c
--- old/plug-ins/common/file-psp.c 2018-01-04 11:58:46.928253797 +0100
+++ new/plug-ins/common/file-psp.c 2018-01-04 12:03:42.141874067 +0100
@@ -913,6 +913,12 @@ read_creator_block (FILE *f,
g_message ("Error reading creator keyword data");
return -1;
}
+ if (string[length - 1] != '\0')
+ {
+ g_message ("Creator keyword data not nul-terminated");
+ g_free (string);
+ return -1;
+ }
switch (keyword)
{
case PSP_CRTR_FLD_CRT_DATE:

View File

@ -0,0 +1,13 @@
diff -urNp old/app/xcf/xcf.c new/app/xcf/xcf.c
--- old/app/xcf/xcf.c 2017-04-30 23:47:39.000000000 +0200
+++ new/app/xcf/xcf.c 2018-01-04 11:56:31.399888783 +0100
@@ -318,7 +318,8 @@ xcf_load_invoker (GimpProcedure *pr
{
info.file_version = 0;
}
- else if (id[9] == 'v')
+ else if (id[9] == 'v' &&
+ id[13] == '\0')
{
info.file_version = atoi (id + 10);
}

View File

@ -0,0 +1,19 @@
diff -urNp old/plug-ins/common/file-psp.c new/plug-ins/common/file-psp.c
--- old/plug-ins/common/file-psp.c 2018-01-04 12:04:14.636811394 +0100
+++ new/plug-ins/common/file-psp.c 2018-01-04 12:12:41.717877789 +0100
@@ -1777,6 +1777,15 @@ load_image (const gchar *filename,
{
block_start = ftell (f);
+ if (block_start + block_total_len > st.st_size)
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
+ _("Could not open '%s' for reading: %s"),
+ gimp_filename_to_utf8 (filename),
+ _("invalid block size"));
+ goto error;
+ }
+
if (id == PSP_IMAGE_BLOCK)
{
if (block_number != 0)

File diff suppressed because it is too large Load Diff

163
gimp-2.8.22-python.patch Normal file
View File

@ -0,0 +1,163 @@
diff -urNp old/plug-ins/pygimp/plug-ins/benchmark-foreground-extract.py new/plug-ins/pygimp/plug-ins/benchmark-foreground-extract.py
--- old/plug-ins/pygimp/plug-ins/benchmark-foreground-extract.py 2018-05-22 13:09:58.522351307 +0200
+++ new/plug-ins/pygimp/plug-ins/benchmark-foreground-extract.py 2018-05-22 13:13:20.132412856 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# Foreground Extraction Benchmark
# Copyright 2005 Sven Neumann <sven@gimp.org>
diff -urNp old/plug-ins/pygimp/plug-ins/clothify.py new/plug-ins/pygimp/plug-ins/clothify.py
--- old/plug-ins/pygimp/plug-ins/clothify.py 2018-05-22 13:09:58.522351307 +0200
+++ new/plug-ins/pygimp/plug-ins/clothify.py 2018-05-22 13:13:30.123366531 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# Gimp-Python - allows the writing of Gimp plugins in Python.
# Copyright (C) 1997 James Henstridge <james@daa.com.au>
diff -urNp old/plug-ins/pygimp/plug-ins/colorxhtml.py new/plug-ins/pygimp/plug-ins/colorxhtml.py
--- old/plug-ins/pygimp/plug-ins/colorxhtml.py 2018-05-22 13:09:58.521351312 +0200
+++ new/plug-ins/pygimp/plug-ins/colorxhtml.py 2018-05-22 13:11:58.188793396 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# Gimp-Python - allows the writing of Gimp plugins in Python.
# Copyright (C) 2003, 2005 Manish Singh <yosh@gimp.org>
diff -urNp old/plug-ins/pygimp/plug-ins/file-openraster.py new/plug-ins/pygimp/plug-ins/file-openraster.py
--- old/plug-ins/pygimp/plug-ins/file-openraster.py 2018-05-22 13:09:58.521351312 +0200
+++ new/plug-ins/pygimp/plug-ins/file-openraster.py 2018-05-22 13:10:57.468076133 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# GIMP Plug-in for the OpenRaster file format
# http://create.freedesktop.org/wiki/OpenRaster
diff -urNp old/plug-ins/pygimp/plug-ins/foggify.py new/plug-ins/pygimp/plug-ins/foggify.py
--- old/plug-ins/pygimp/plug-ins/foggify.py 2018-05-22 13:09:58.522351307 +0200
+++ new/plug-ins/pygimp/plug-ins/foggify.py 2018-05-22 13:11:44.843855476 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# Gimp-Python - allows the writing of Gimp plugins in Python.
# Copyright (C) 1997 James Henstridge <james@daa.com.au>
diff -urNp old/plug-ins/pygimp/plug-ins/gradients-save-as-css.py new/plug-ins/pygimp/plug-ins/gradients-save-as-css.py
--- old/plug-ins/pygimp/plug-ins/gradients-save-as-css.py 2018-05-22 13:09:58.521351312 +0200
+++ new/plug-ins/pygimp/plug-ins/gradients-save-as-css.py 2018-05-22 13:11:34.716902608 +0200
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#! /usr/bin/env python2
# -*- coding: utf-8 -*-
# Allows saving (TODO: and loading) CSS gradient files
@@ -101,4 +101,4 @@ register(
menu="<Gradients>",
domain=("gimp20-python", gimp.locale_directory)
)
-main()
\ Chybí znak konce řádku na konci souboru
+main()
diff -urNp old/plug-ins/pygimp/plug-ins/palette-offset.py new/plug-ins/pygimp/plug-ins/palette-offset.py
--- old/plug-ins/pygimp/plug-ins/palette-offset.py 2018-05-22 13:09:58.521351312 +0200
+++ new/plug-ins/pygimp/plug-ins/palette-offset.py 2018-05-22 13:12:38.003608362 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff -urNp old/plug-ins/pygimp/plug-ins/palette-sort.py new/plug-ins/pygimp/plug-ins/palette-sort.py
--- old/plug-ins/pygimp/plug-ins/palette-sort.py 2018-05-22 13:09:58.522351307 +0200
+++ new/plug-ins/pygimp/plug-ins/palette-sort.py 2018-05-22 13:11:10.469015537 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff -urNp old/plug-ins/pygimp/plug-ins/palette-to-gradient.py new/plug-ins/pygimp/plug-ins/palette-to-gradient.py
--- old/plug-ins/pygimp/plug-ins/palette-to-gradient.py 2018-05-22 13:09:58.522351307 +0200
+++ new/plug-ins/pygimp/plug-ins/palette-to-gradient.py 2018-05-22 13:10:27.932213923 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff -urNp old/plug-ins/pygimp/plug-ins/py-slice.py new/plug-ins/pygimp/plug-ins/py-slice.py
--- old/plug-ins/pygimp/plug-ins/py-slice.py 2018-05-22 13:09:58.521351312 +0200
+++ new/plug-ins/pygimp/plug-ins/py-slice.py 2018-05-22 13:10:47.796121235 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#Copyright (c) Manish Singh
diff -urNp old/plug-ins/pygimp/plug-ins/python-console.py new/plug-ins/pygimp/plug-ins/python-console.py
--- old/plug-ins/pygimp/plug-ins/python-console.py 2018-05-22 13:09:58.522351307 +0200
+++ new/plug-ins/pygimp/plug-ins/python-console.py 2018-05-22 13:12:08.532745298 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# Gimp-Python - allows the writing of Gimp plugins in Python.
# Copyright (C) 1997 James Henstridge <james@daa.com.au>
diff -urNp old/plug-ins/pygimp/plug-ins/python-eval.py new/plug-ins/pygimp/plug-ins/python-eval.py
--- old/plug-ins/pygimp/plug-ins/python-eval.py 2018-05-22 13:09:58.522351307 +0200
+++ new/plug-ins/pygimp/plug-ins/python-eval.py 2018-05-22 13:13:44.059301940 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# Gimp-Python - allows the writing of Gimp plugins in Python.
# Copyright (C) 2006 Manish Singh <yosh@gimp.org>
diff -urNp old/plug-ins/pygimp/plug-ins/shadow_bevel.py new/plug-ins/pygimp/plug-ins/shadow_bevel.py
--- old/plug-ins/pygimp/plug-ins/shadow_bevel.py 2018-05-22 13:09:58.521351312 +0200
+++ new/plug-ins/pygimp/plug-ins/shadow_bevel.py 2018-05-22 13:13:56.019246529 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# Gimp-Python - allows the writing of Gimp plugins in Python.
# Copyright (C) 1997 James Henstridge <james@daa.com.au>
diff -urNp old/plug-ins/pygimp/plug-ins/sphere.py new/plug-ins/pygimp/plug-ins/sphere.py
--- old/plug-ins/pygimp/plug-ins/sphere.py 2018-05-22 13:09:58.522351307 +0200
+++ new/plug-ins/pygimp/plug-ins/sphere.py 2018-05-22 13:14:14.564160649 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# Gimp-Python - allows the writing of Gimp plugins in Python.
# Copyright (C) 1997 James Henstridge <james@daa.com.au>
diff -urNp old/plug-ins/pygimp/plug-ins/text-brush.py new/plug-ins/pygimp/plug-ins/text-brush.py
--- old/plug-ins/pygimp/plug-ins/text-brush.py 2018-05-22 13:09:58.521351312 +0200
+++ new/plug-ins/pygimp/plug-ins/text-brush.py 2018-05-22 13:12:49.291555951 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# coding: utf-8
# Author: João Sebastião de Oliveira Bueno
diff -urNp old/plug-ins/pygimp/plug-ins/whirlpinch.py new/plug-ins/pygimp/plug-ins/whirlpinch.py
--- old/plug-ins/pygimp/plug-ins/whirlpinch.py 2018-05-22 13:09:58.521351312 +0200
+++ new/plug-ins/pygimp/plug-ins/whirlpinch.py 2018-05-22 13:14:24.092116544 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# Gimp-Python - allows the writing of Gimp plugins in Python.
# Copyright (C) 1997 James Henstridge <james@daa.com.au>
diff -urNp old/configure new/configure
--- old/configure 2018-06-28 08:44:29.162846929 +0200
+++ new/configure 2018-06-28 08:47:06.790148573 +0200
@@ -23051,7 +23051,7 @@ if ${am_cv_pathless_PYTHON+:} false; the
$as_echo_n "(cached) " >&6
else
- for am_cv_pathless_PYTHON in python python2 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
+ for am_cv_pathless_PYTHON in python2 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
test "$am_cv_pathless_PYTHON" = none && break
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros

View File

@ -0,0 +1,12 @@
diff -up gimp-2.8.6/etc/gimprc.external-help-browser gimp-2.8.6/etc/gimprc
--- gimp-2.8.6/etc/gimprc.external-help-browser 2013-07-02 12:04:11.011774506 +0200
+++ gimp-2.8.6/etc/gimprc 2013-07-02 12:04:25.408824028 +0200
@@ -671,7 +671,7 @@
# Sets the browser used by the help system. Possible values are gimp and
# web-browser.
#
-# (help-browser gimp)
+(help-browser web-browser)
# When enabled, the online user manual will be used by the help system.
# Otherwise the locally installed copy is used. Possible values are yes and

60
gimp-CVE-2022-30067.patch Normal file
View File

@ -0,0 +1,60 @@
From 4f99f1fcfd892ead19831b5adcd38a99d71214b6 Mon Sep 17 00:00:00 2001
From: Jacob Boerema <jgboerema@gmail.com>
Date: Fri, 29 Apr 2022 16:40:32 -0400
Subject: [PATCH] app: fix #8120 GIMP 2.10.30 crashed when allocate large
memory
GIMP could crash if the information regarding old path properties read
from XCF was incorrect. It did not check if xcf_old_path succeeded and
kept trying to load more paths even if the last one failed to load.
Instead we now stop loading paths as soon as that function fails.
In case we have a failure here we also try to skip to the next property
based on the size of the path property, in hopes that the only problem
was this property.
---
app/xcf/xcf-load.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/app/xcf/xcf-load.c b/app/xcf/xcf-load.c
index ac9c4ea248..67bc766390 100644
--- a/app/xcf/xcf-load.c
+++ b/app/xcf/xcf-load.c
@@ -1168,7 +1168,12 @@ xcf_load_image_props (XcfInfo *info,
break;
case PROP_PATHS:
- xcf_load_old_paths (info, image);
+ {
+ goffset base = info->cp;
+
+ if (! xcf_load_old_paths (info, image))
+ xcf_seek_pos (info, base + prop_size, NULL);
+ }
break;
case PROP_USER_UNIT:
@@ -3035,8 +3040,11 @@ xcf_load_old_paths (XcfInfo *info,
xcf_read_int32 (info, &last_selected_row, 1);
xcf_read_int32 (info, &num_paths, 1);
+ GIMP_LOG (XCF, "Number of old paths: %u", num_paths);
+
while (num_paths-- > 0)
- xcf_load_old_path (info, image);
+ if (! xcf_load_old_path (info, image))
+ return FALSE;
active_vectors =
GIMP_VECTORS (gimp_container_get_child_by_index (gimp_image_get_vectors (image),
@@ -3087,7 +3095,7 @@ xcf_load_old_path (XcfInfo *info,
}
else if (version != 1)
{
- g_printerr ("Unknown path type. Possibly corrupt XCF file");
+ g_printerr ("Unknown path type (version: %u). Possibly corrupt XCF file.\n", version);
g_free (name);
return FALSE;
--
GitLab

31
gimp-CVE-2022-32990.patch Normal file
View File

@ -0,0 +1,31 @@
From 22af0bcfe67c1c86381f33975ca7fdbde6b36b39 Mon Sep 17 00:00:00 2001
From: Jacob Boerema <jgboerema@gmail.com>
Date: Sun, 5 Jun 2022 15:38:24 -0400
Subject: [PATCH] app: fix #8230 crash in gimp_layer_invalidate_boundary when
channel is NULL
gimp_channel_is_empty returns FALSE if channel is NULL. This causes
gimp_layer_invalidate_boundary to crash if the mask channel is NULL.
With a NULL channel gimp_channel_is_empty should return TRUE, just like
the similar gimp_image_is_empty does, because returning FALSE here
suggests we have a non empty channel.
---
app/core/gimpchannel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/core/gimpchannel.c b/app/core/gimpchannel.c
index 7b6a9851ae..502821ba58 100644
--- a/app/core/gimpchannel.c
+++ b/app/core/gimpchannel.c
@@ -1827,7 +1827,7 @@ gimp_channel_boundary (GimpChannel *channel,
gboolean
gimp_channel_is_empty (GimpChannel *channel)
{
- g_return_val_if_fail (GIMP_IS_CHANNEL (channel), FALSE);
+ g_return_val_if_fail (GIMP_IS_CHANNEL (channel), TRUE);
return GIMP_CHANNEL_GET_CLASS (channel)->is_empty (channel);
}
--
GitLab

371
gimp-remove-lua.patch Normal file
View File

@ -0,0 +1,371 @@
diff -urNp a/extensions/goat-exercises/goat-exercise-lua.lua b/extensions/goat-exercises/goat-exercise-lua.lua
--- a/extensions/goat-exercises/goat-exercise-lua.lua 2022-03-09 09:39:44.007314944 +0100
+++ b/extensions/goat-exercises/goat-exercise-lua.lua 1970-01-01 01:00:00.000000000 +0100
@@ -1,184 +0,0 @@
-#!/usr/bin/env luajit
-
--- GIMP - The GNU Image Manipulation Program
--- Copyright (C) 1995 Spencer Kimball and Peter Mattis
---
--- goat-exercise-lua.lua
--- Copyright (C) Jehan
---
--- This program is free software: you can redistribute it and/or modify
--- it under the terms of the GNU General Public License as published by
--- the Free Software Foundation; either version 3 of the License, or
--- (at your option) any later version.
---
--- This program is distributed in the hope that it will be useful,
--- but WITHOUT ANY WARRANTY; without even the implied warranty of
--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--- GNU General Public License for more details.
---
--- You should have received a copy of the GNU General Public License
--- along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-local lgi = require 'lgi'
-
-local GLib = lgi.GLib
-local GObject = lgi.GObject
-local Gio = lgi.Gio
-local Gegl = lgi.Gegl
-local Gimp = lgi.Gimp
-local GimpUi = lgi.GimpUi
-local Gtk = lgi.Gtk
-local Gdk = lgi.Gdk
-
-local Goat = lgi.package 'Goat'
-local Goat = lgi.Goat
-
-function run(procedure, run_mode, image, drawables, args, run_data)
- -- procedure:new_return_values() crashes LGI so we construct the
- -- GimpValueArray manually.
- local retval = Gimp.ValueArray(1)
-
- if table.getn(drawables) ~= 1 then
- local calling_err = GObject.Value(Gimp.PDBStatusType, Gimp.PDBStatusType.CALLING_ERROR)
- local msg = "Procedure '%s' only works with one drawable."
-
- msg = string.format(msg, procedure:get_name())
-
- retval:append(calling_err)
- retval:append(GObject.Value(GObject.Type.STRING, msg))
- return retval
- end
-
- local drawable = drawables[1]
-
- -- Not sure why run_mode has become a string instead of testing
- -- against Gimp.RunMode.INTERACTIVE.
- if run_mode == "INTERACTIVE" then
- GimpUi.init("goat-exercise-lua");
- local dialog = GimpUi.Dialog {
- title = "Exercise a goat (Lua)",
- role = "goat-exercise-Lua",
- use_header_bar = 1
- }
- dialog:add_button("_Cancel", Gtk.ResponseType.CANCEL);
- dialog:add_button("_Source", Gtk.ResponseType.APPLY);
- dialog:add_button("_OK", Gtk.ResponseType.OK);
-
- local geometry = Gdk.Geometry()
- geometry.min_aspect = 0.5;
- geometry.max_aspect = 1.0;
- dialog:set_geometry_hints (nil, geometry, Gdk.WindowHints.ASPECT);
-
- local box = Gtk.Box {
- orientation = Gtk.Orientation.VERTICAL,
- spacing = 2
- }
- dialog:get_content_area():add(box)
- box:show()
-
- local lang = "Lua"
- local head_text = "This plug-in is an exercise in '%s' to demo plug-in creation.\n" ..
- "Check out the last version of the source code online by clicking the \"Source\" button."
-
- local label = Gtk.Label { label = string.format(head_text, lang) }
- box:pack_start(label, false, false, 1)
- label:show()
-
- local contents = GLib.file_get_contents(arg[0])
- if (contents) then
- local scrolled = Gtk.ScrolledWindow()
- scrolled:set_vexpand (true)
- box:pack_start(scrolled, true, true, 1)
- scrolled:show()
-
- local view = Gtk.TextView()
- view:set_wrap_mode(Gtk.WrapMode.WORD)
- view:set_editable(false)
- local buffer = view:get_buffer()
- buffer:set_text(contents, -1)
- scrolled:add(view)
- view:show()
- end
-
- while (true) do
- local response = dialog:run()
- local url = 'https://gitlab.gnome.org/GNOME/gimp/blob/master/extensions/goat-exercises/goat-exercise-lua.lua'
-
- if response == Gtk.ResponseType.OK then
- dialog:destroy()
- break
- elseif (response == Gtk.ResponseType.APPLY) then
- Gio.app_info_launch_default_for_uri(url, nil);
- else -- CANCEL, CLOSE, DELETE_EVENT
- dialog:destroy()
- local cancel = GObject.Value(Gimp.PDBStatusType, Gimp.PDBStatusType.CANCEL)
- retval:append(cancel)
- return retval
- end
- end
- end
-
- local x, y, width, height = drawable:mask_intersect()
- if width ~= nill and height ~= nil and width > 0 and height > 0 then
- Gegl.init(nil)
-
- local buffer = drawable:get_buffer()
- local shadow_buffer = drawable:get_shadow_buffer()
-
- local graph = Gegl.Node()
- local input = graph:create_child("gegl:buffer-source")
- input:set_property("buffer", GObject.Value(Gegl.Buffer, buffer))
- local invert = graph:create_child("gegl:invert")
- local output = graph:create_child("gegl:write-buffer")
- output:set_property("buffer", GObject.Value(Gegl.Buffer, shadow_buffer))
- input:link(invert)
- invert:link(output)
- output:process()
-
- shadow_buffer:flush()
-
- drawable:merge_shadow(true)
- drawable:update(x, y, width, height)
- Gimp.displays_flush()
- end
-
- local success = GObject.Value(Gimp.PDBStatusType, Gimp.PDBStatusType.SUCCESS)
- retval:append(success)
- return retval
-end
-
-Goat:class('Exercise', Gimp.PlugIn)
-
-function Goat.Exercise:do_query_procedures()
- return { 'plug-in-goat-exercise-lua' }
-end
-
-function Goat.Exercise:do_create_procedure(name)
- local procedure = Gimp.ImageProcedure.new(self, name,
- Gimp.PDBProcType.PLUGIN,
- run, nil)
-
- procedure:set_image_types("*");
- procedure:set_sensitivity_mask(Gimp.ProcedureSensitivityMask.DRAWABLE);
-
- procedure:set_menu_label("Exercise a Lua goat");
- procedure:set_icon_name(GimpUi.ICON_GEGL);
- procedure:add_menu_path('<Image>/Filters/Development/Goat exercises/');
-
- procedure:set_documentation("Exercise a goat in the Lua language",
- "Takes a goat for a walk in Lua",
- name);
- procedure:set_attribution("Jehan", "Jehan", "2019");
-
- return procedure
-end
-
--- 'arg' is a Lua table. When automatically converted to an array, the
--- value 0 is deleted (because Lua arrays start at 1!), which breaks
--- Gimp.main() call. So let's create our own array starting at 1.
-argv = {}
-for k, v in pairs(arg) do
- argv[k+1] = v
-end
-
-Gimp.main(GObject.Type.name(Goat.Exercise), argv)
diff -urNp a/extensions/goat-exercises/Makefile.am b/extensions/goat-exercises/Makefile.am
--- a/extensions/goat-exercises/Makefile.am 2022-03-09 09:39:44.007314944 +0100
+++ b/extensions/goat-exercises/Makefile.am 2022-03-09 10:27:14.623108639 +0100
@@ -72,10 +72,10 @@ endif
# Lua (lua-jit + LGI) version.
-if BUILD_LUA
-goat_exercise_luadir = $(goat_exercise_c_libexecdir)
-goat_exercise_lua_SCRIPTS = goat-exercise-lua.lua
-endif
+#if BUILD_LUA
+#goat_exercise_luadir = $(goat_exercise_c_libexecdir)
+#goat_exercise_lua_SCRIPTS = goat-exercise-lua.lua
+#endif
# Python 3 (pygobject) version.
@@ -135,7 +135,6 @@ org.gimp.extension.goat-exercises.metain
EXTRA_DIST = \
goat-exercise-gjs.js \
- goat-exercise-lua.lua \
goat-exercise-py3.py \
$(appstream_in_files)
diff -urNp a/extensions/goat-exercises/Makefile.in b/extensions/goat-exercises/Makefile.in
--- a/extensions/goat-exercises/Makefile.in 2022-03-09 09:39:44.006314936 +0100
+++ b/extensions/goat-exercises/Makefile.in 2022-03-09 10:28:59.224986448 +0100
@@ -118,7 +118,6 @@ CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(goat_exercise_c_libexecdir)" \
"$(DESTDIR)$(goat_exercise_vala_libexecdir)" \
"$(DESTDIR)$(goat_exercise_gjsdir)" \
- "$(DESTDIR)$(goat_exercise_luadir)" \
"$(DESTDIR)$(goat_exercise_py3dir)" "$(DESTDIR)$(appdatadir)" \
"$(DESTDIR)$(goat_exercise_c_libexecdir)" \
"$(DESTDIR)$(goat_exercise_vala_libexecdir)"
@@ -183,7 +182,7 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
-SCRIPTS = $(goat_exercise_gjs_SCRIPTS) $(goat_exercise_lua_SCRIPTS) \
+SCRIPTS = $(goat_exercise_gjs_SCRIPTS) \
$(goat_exercise_py3_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -753,8 +752,8 @@ goat_exercise_c_LDADD = \
@BUILD_JAVASCRIPT_TRUE@goat_exercise_gjs_SCRIPTS = goat-exercise-gjs.js
# Lua (lua-jit + LGI) version.
-@BUILD_LUA_TRUE@goat_exercise_luadir = $(goat_exercise_c_libexecdir)
-@BUILD_LUA_TRUE@goat_exercise_lua_SCRIPTS = goat-exercise-lua.lua
+#@BUILD_LUA_TRUE@goat_exercise_luadir = $(goat_exercise_c_libexecdir)
+#@BUILD_LUA_TRUE@goat_exercise_lua_SCRIPTS = goat-exercise-lua.lua
# Python 3 (pygobject) version.
@BUILD_PYTHON_TRUE@goat_exercise_py3dir = $(goat_exercise_c_libexecdir)
@@ -795,7 +794,6 @@ appdatadir = $(goat_exercise_c_libexecdi
appdata_DATA = $(appstream_files)
EXTRA_DIST = \
goat-exercise-gjs.js \
- goat-exercise-lua.lua \
goat-exercise-py3.py \
$(appstream_in_files)
@@ -977,41 +975,41 @@ uninstall-goat_exercise_gjsSCRIPTS:
files=`for p in $$list; do echo "$$p"; done | \
sed -e 's,.*/,,;$(transform)'`; \
dir='$(DESTDIR)$(goat_exercise_gjsdir)'; $(am__uninstall_files_from_dir)
-install-goat_exercise_luaSCRIPTS: $(goat_exercise_lua_SCRIPTS)
- @$(NORMAL_INSTALL)
- @list='$(goat_exercise_lua_SCRIPTS)'; test -n "$(goat_exercise_luadir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(goat_exercise_luadir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(goat_exercise_luadir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n' \
- -e 'h;s|.*|.|' \
- -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) { files[d] = files[d] " " $$1; \
- if (++n[d] == $(am__install_max)) { \
- print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
- else { print "f", d "/" $$4, $$1 } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(goat_exercise_luadir)$$dir'"; \
- $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(goat_exercise_luadir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-goat_exercise_luaSCRIPTS:
- @$(NORMAL_UNINSTALL)
- @list='$(goat_exercise_lua_SCRIPTS)'; test -n "$(goat_exercise_luadir)" || exit 0; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 's,.*/,,;$(transform)'`; \
- dir='$(DESTDIR)$(goat_exercise_luadir)'; $(am__uninstall_files_from_dir)
+#install-goat_exercise_luaSCRIPTS: $(goat_exercise_lua_SCRIPTS)
+# @$(NORMAL_INSTALL)
+# @list='$(goat_exercise_lua_SCRIPTS)'; test -n "$(goat_exercise_luadir)" || list=; \
+# if test -n "$$list"; then \
+# echo " $(MKDIR_P) '$(DESTDIR)$(goat_exercise_luadir)'"; \
+# $(MKDIR_P) "$(DESTDIR)$(goat_exercise_luadir)" || exit 1; \
+# fi; \
+# for p in $$list; do \
+# if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+# if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+# done | \
+# sed -e 'p;s,.*/,,;n' \
+# -e 'h;s|.*|.|' \
+# -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+# $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+# { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+# if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+# if (++n[d] == $(am__install_max)) { \
+# print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+# else { print "f", d "/" $$4, $$1 } } \
+# END { for (d in files) print "f", d, files[d] }' | \
+# while read type dir files; do \
+# if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+# test -z "$$files" || { \
+# echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(goat_exercise_luadir)$$dir'"; \
+# $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(goat_exercise_luadir)$$dir" || exit $$?; \
+# } \
+# ; done
+
+#uninstall-goat_exercise_luaSCRIPTS:
+# @$(NORMAL_UNINSTALL)
+# @list='$(goat_exercise_lua_SCRIPTS)'; test -n "$(goat_exercise_luadir)" || exit 0; \
+# files=`for p in $$list; do echo "$$p"; done | \
+# sed -e 's,.*/,,;$(transform)'`; \
+# dir='$(DESTDIR)$(goat_exercise_luadir)'; $(am__uninstall_files_from_dir)
install-goat_exercise_py3SCRIPTS: $(goat_exercise_py3_SCRIPTS)
@$(NORMAL_INSTALL)
@list='$(goat_exercise_py3_SCRIPTS)'; test -n "$(goat_exercise_py3dir)" || list=; \
@@ -1266,7 +1264,7 @@ check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(DATA)
installdirs:
- for dir in "$(DESTDIR)$(goat_exercise_c_libexecdir)" "$(DESTDIR)$(goat_exercise_vala_libexecdir)" "$(DESTDIR)$(goat_exercise_gjsdir)" "$(DESTDIR)$(goat_exercise_luadir)" "$(DESTDIR)$(goat_exercise_py3dir)" "$(DESTDIR)$(appdatadir)" "$(DESTDIR)$(goat_exercise_c_libexecdir)" "$(DESTDIR)$(goat_exercise_vala_libexecdir)"; do \
+ for dir in "$(DESTDIR)$(goat_exercise_c_libexecdir)" "$(DESTDIR)$(goat_exercise_vala_libexecdir)" "$(DESTDIR)$(goat_exercise_gjsdir)" "$(DESTDIR)$(goat_exercise_py3dir)" "$(DESTDIR)$(appdatadir)" "$(DESTDIR)$(goat_exercise_c_libexecdir)" "$(DESTDIR)$(goat_exercise_vala_libexecdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
@@ -1330,7 +1328,6 @@ info: info-am
info-am:
install-data-am: install-appdataDATA install-goat_exercise_gjsSCRIPTS \
- install-goat_exercise_luaSCRIPTS \
install-goat_exercise_py3SCRIPTS
install-dvi: install-dvi-am
@@ -1385,7 +1382,6 @@ uninstall-am: uninstall-appdataDATA \
uninstall-goat_exercise_c_libexecDATA \
uninstall-goat_exercise_c_libexecPROGRAMS \
uninstall-goat_exercise_gjsSCRIPTS \
- uninstall-goat_exercise_luaSCRIPTS \
uninstall-goat_exercise_py3SCRIPTS \
uninstall-goat_exercise_vala_libexecDATA \
uninstall-goat_exercise_vala_libexecPROGRAMS
@@ -1403,7 +1399,6 @@ uninstall-am: uninstall-appdataDATA \
install-goat_exercise_c_libexecDATA \
install-goat_exercise_c_libexecPROGRAMS \
install-goat_exercise_gjsSCRIPTS \
- install-goat_exercise_luaSCRIPTS \
install-goat_exercise_py3SCRIPTS \
install-goat_exercise_vala_libexecDATA \
install-goat_exercise_vala_libexecPROGRAMS install-html \
@@ -1416,7 +1411,6 @@ uninstall-am: uninstall-appdataDATA \
uninstall-appdataDATA uninstall-goat_exercise_c_libexecDATA \
uninstall-goat_exercise_c_libexecPROGRAMS \
uninstall-goat_exercise_gjsSCRIPTS \
- uninstall-goat_exercise_luaSCRIPTS \
uninstall-goat_exercise_py3SCRIPTS \
uninstall-goat_exercise_vala_libexecDATA \
uninstall-goat_exercise_vala_libexecPROGRAMS

2422
gimp.spec Normal file

File diff suppressed because it is too large Load Diff

1
sources Normal file
View File

@ -0,0 +1 @@
SHA1 (gimp-2.8.22.tar.bz2) = c894a0d9a864d418bdbd30a22d698c731583e5c4