From db4cee156b1a660578006080894ce35f0a7b6c88 Mon Sep 17 00:00:00 2001 From: amir Date: Sat, 29 Aug 2026 19:31:14 +0330 Subject: [PATCH 1/2] fix(search): ignore invalid photo exposure times --- services/search/pkg/content/tika_test.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/services/search/pkg/content/tika_test.go b/services/search/pkg/content/tika_test.go index 772ed185b3..425997ff7a 100644 --- a/services/search/pkg/content/tika_test.go +++ b/services/search/pkg/content/tika_test.go @@ -145,6 +145,17 @@ var _ = Describe("Tika", func() { Expect(doc.Content).To(Equal("body test stop words!!!")) }) + It("ignores zero exposure time", func() { + fullResponse = `[{"exif:ExposureTime": "0.0"}]` + + doc, err := tika.Extract(context.TODO(), &provider.ResourceInfo{ + Type: provider.ResourceType_RESOURCE_TYPE_FILE, + Size: 1, + }) + Expect(err).ToNot(HaveOccurred()) + Expect(doc.Photo).To(BeNil()) + }) + It("removes stop words", func() { body = "body to test stop words!!! against almost everyone" language = "en" From 67124a6c3732d5d3c0548bc417e5d0c23d956132 Mon Sep 17 00:00:00 2001 From: amir Date: Tue, 1 Sep 2026 02:03:19 +0330 Subject: [PATCH 2/2] fix(search): ignore invalid exposure denominators --- services/search/pkg/content/tika_photo.go | 10 ++++++---- services/search/pkg/content/tika_test.go | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/services/search/pkg/content/tika_photo.go b/services/search/pkg/content/tika_photo.go index 2ee961a300..20798cc5fa 100644 --- a/services/search/pkg/content/tika_photo.go +++ b/services/search/pkg/content/tika_photo.go @@ -63,10 +63,12 @@ func (t Tika) getPhoto(meta map[string][]string) *libregraph.Photo { } if v, err := getFirstValue(meta, "exif:ExposureTime"); err == nil { - if i, err := strconv.ParseFloat(v, 64); err == nil && i > 0 { - initPhoto() - photo.SetExposureNumerator(1) - photo.SetExposureDenominator(math.Round(1 / i)) + if i, err := strconv.ParseFloat(v, 64); err == nil { + if d := math.Round(1 / i); !math.IsNaN(d) && !math.IsInf(d, 0) && d > 0 { + initPhoto() + photo.SetExposureNumerator(1) + photo.SetExposureDenominator(d) + } } } diff --git a/services/search/pkg/content/tika_test.go b/services/search/pkg/content/tika_test.go index 425997ff7a..ddb4e85320 100644 --- a/services/search/pkg/content/tika_test.go +++ b/services/search/pkg/content/tika_test.go @@ -146,14 +146,16 @@ var _ = Describe("Tika", func() { }) It("ignores zero exposure time", func() { - fullResponse = `[{"exif:ExposureTime": "0.0"}]` + fullResponse = `[{"exif:ExposureTime": "0.0", "exif:FNumber": "2.0"}]` doc, err := tika.Extract(context.TODO(), &provider.ResourceInfo{ Type: provider.ResourceType_RESOURCE_TYPE_FILE, Size: 1, }) Expect(err).ToNot(HaveOccurred()) - Expect(doc.Photo).To(BeNil()) + Expect(doc.Photo).ToNot(BeNil()) + Expect(doc.Photo.FNumber).To(Equal(libregraph.PtrFloat64(2))) + Expect(doc.Photo.ExposureDenominator).To(BeNil()) }) It("removes stop words", func() {