Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gdk-pixbuf gdk-pixbuf
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 80
    • Issues 80
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 14
    • Merge requests 14
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOME
  • gdk-pixbufgdk-pixbuf
  • Issues
  • #55

Closed
Open
Created Apr 28, 2016 by Bugzilla@bugzilla-migration💬Reporter

valid GIF images rejected by gdk-pixbuf

Submitted by Nigel Tao

Link to original bug (#765705)

Description

Created attachment 326914 Tarball of three .gif images that eog (incorrectly) rejects

The Go program below generates two .gif files (attached as a tar.bz2). Both of these files are viewable with Firefox, Google Chrome and ImageMagick just fine, but not in Eye-of-Gnome, which AFAICT uses gdk-pixbuf.

The "GIF-image-loader-cannot-understand-this-image.gif" file triggers the code path at https://github.com/GNOME/gdk-pixbuf/blob/master/gdk-pixbuf/io-gif.c#L634 for which the comment immediately above says that: "FIXME - we should handle this case".

The "internal-error-in-the-GIF-loader.gif" file triggers the code path at https://github.com/GNOME/gdk-pixbuf/blob/master/gdk-pixbuf/io-gif.c#L500 and while I am not overly familiar with the gdk-pixbuf code, at the very least, untrusted image input should not trigger "internal errors", in my opinion.

A larger GIF image, lissajous.gif, is also in the tarball. It is the output of this Go program: https://github.com/adonovan/gopl.io/blob/master/ch1/lissajous/main.go

Once again, Firefox, Google Chrome and ImageMagick are all happy with this lissajous.gif file; Eye-of-Gnome is not, saying "Circular table entry in GIF file".

package main

import (
	"image"
	"image/color"
	"image/gif"
	"log"
	"os"
)

var palette = make([]color.Color, 256)

func main() {
	for i := range palette {
		palette[i] = color.Gray{byte(i)}
	}

	do(4, "GIF-image-loader-cannot-understand-this-image.gif")
	do(16, "internal-error-in-the-GIF-loader.gif")
}

func do(n int, filename string) {
	out, err := os.Create(filename)
	if err != nil {
		log.Fatal(err)
	}
	defer out.Close()

	// img is an n x n paletted image where every pixel is initialized to the
	// 0th entry in the palette.
	img := image.NewPaletted(image.Rect(0, 0, n, n), palette)

	// Change false to true in order to make each pixel have a distinct palette
	// index, so that the LZW compression step doesn't compress anything.
	//
	// Either way, this program should generate valid images, but when this is
	// false, it seems that eog cannot read the resultant GIF images, even
	// though Firefox, Google Chrome and ImageMagick can.
	if false {
		for i := range img.Pix {
			img.Pix[i] = byte(i)
		}
	}

	if err := gif.Encode(out, img, nil); err != nil {
		log.Fatal(err)
	}
}

Attachment 326914, "Tarball of three .gif images that eog (incorrectly) rejects":
eog-rejects.tar.bz2

Version: git master

Depends on

  • Bug 739202
Edited May 30, 2018 by Emmanuele Bassi
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking