src/java.desktop/share/native/libsplashscreen/libpng/pngset.c
author prr
Tue, 31 Jul 2018 14:03:39 -0700
changeset 51304 66d9993dd4ad
parent 48280 791d551bcdb8
child 57618 53154e45385a
permissions -rw-r--r--
8208353: Upgrade JDK 11 to libpng 1.6.35 Reviewed-by: jdv, kaddepalli
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
     2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
 * This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
 * under the terms of the GNU General Public License version 2 only, as
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     6
 * published by the Free Software Foundation.  Oracle designates this
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     7
 * particular file as subject to the "Classpath" exception as provided
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     8
 * by Oracle in the LICENSE file that accompanied this code.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     9
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
 * This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
 * version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
 * accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
 * You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
 * 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    20
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    21
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    22
 * questions.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    23
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
/* pngset.c - storage of image information into info struct
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
 * This file is available under and governed by the GNU General Public
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
 * License version 2 only, as published by the Free Software Foundation.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
 * However, the following notice accompanied the original version of this
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
 * file and, per its terms, should not be removed:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
 *
51304
66d9993dd4ad 8208353: Upgrade JDK 11 to libpng 1.6.35
prr
parents: 48280
diff changeset
    32
 * Last changed in libpng 1.6.35 [July 15, 2018]
66d9993dd4ad 8208353: Upgrade JDK 11 to libpng 1.6.35
prr
parents: 48280
diff changeset
    33
 * Copyright (c) 1998-2018 Glenn Randers-Pehrson
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
 *
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    37
 * This code is released under the libpng license.
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    38
 * For conditions of distribution and use, see the disclaimer
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    39
 * and license in png.h
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    40
 *
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
 * The functions here are used during reads to store data from the file
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
 * into the info struct, and during writes to store application data
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
 * into the info struct for writing into the file.  This abstracts the
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
 * info struct and allows us to change the structure in the future.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    47
#include "pngpriv.h"
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    51
#ifdef PNG_bKGD_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    53
png_set_bKGD(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    54
    png_const_color_16p background)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    56
   png_debug1(1, "in %s storage function", "bKGD");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    57
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    58
   if (png_ptr == NULL || info_ptr == NULL || background == NULL)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    61
   info_ptr->background = *background;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
   info_ptr->valid |= PNG_INFO_bKGD;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    66
#ifdef PNG_cHRM_SUPPORTED
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    67
void PNGFAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    68
png_set_cHRM_fixed(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    69
    png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    70
    png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    71
    png_fixed_point blue_x, png_fixed_point blue_y)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
{
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    73
   png_xy xy;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    74
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    75
   png_debug1(1, "in %s storage function", "cHRM fixed");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
    76
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    80
   xy.redx = red_x;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    81
   xy.redy = red_y;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    82
   xy.greenx = green_x;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    83
   xy.greeny = green_y;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    84
   xy.bluex = blue_x;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    85
   xy.bluey = blue_y;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    86
   xy.whitex = white_x;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    87
   xy.whitey = white_y;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    88
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    89
   if (png_colorspace_set_chromaticities(png_ptr, &info_ptr->colorspace, &xy,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    90
       2/* override with app values*/) != 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    91
      info_ptr->colorspace.flags |= PNG_COLORSPACE_FROM_cHRM;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    92
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    93
   png_colorspace_sync_info(png_ptr, info_ptr);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    94
}
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    95
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    96
void PNGFAPI
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    97
png_set_cHRM_XYZ_fixed(png_const_structrp png_ptr, png_inforp info_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    98
    png_fixed_point int_red_X, png_fixed_point int_red_Y,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
    99
    png_fixed_point int_red_Z, png_fixed_point int_green_X,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   100
    png_fixed_point int_green_Y, png_fixed_point int_green_Z,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   101
    png_fixed_point int_blue_X, png_fixed_point int_blue_Y,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   102
    png_fixed_point int_blue_Z)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   103
{
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   104
   png_XYZ XYZ;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   105
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   106
   png_debug1(1, "in %s storage function", "cHRM XYZ fixed");
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   107
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   108
   if (png_ptr == NULL || info_ptr == NULL)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   109
      return;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   110
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   111
   XYZ.red_X = int_red_X;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   112
   XYZ.red_Y = int_red_Y;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   113
   XYZ.red_Z = int_red_Z;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   114
   XYZ.green_X = int_green_X;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   115
   XYZ.green_Y = int_green_Y;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   116
   XYZ.green_Z = int_green_Z;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   117
   XYZ.blue_X = int_blue_X;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   118
   XYZ.blue_Y = int_blue_Y;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   119
   XYZ.blue_Z = int_blue_Z;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   120
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   121
   if (png_colorspace_set_endpoints(png_ptr, &info_ptr->colorspace,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   122
       &XYZ, 2) != 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   123
      info_ptr->colorspace.flags |= PNG_COLORSPACE_FROM_cHRM;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   124
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   125
   png_colorspace_sync_info(png_ptr, info_ptr);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   126
}
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   128
#  ifdef PNG_FLOATING_POINT_SUPPORTED
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   129
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   130
png_set_cHRM(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   131
    double white_x, double white_y, double red_x, double red_y,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   132
    double green_x, double green_y, double blue_x, double blue_y)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   133
{
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   134
   png_set_cHRM_fixed(png_ptr, info_ptr,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   135
       png_fixed(png_ptr, white_x, "cHRM White X"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   136
       png_fixed(png_ptr, white_y, "cHRM White Y"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   137
       png_fixed(png_ptr, red_x, "cHRM Red X"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   138
       png_fixed(png_ptr, red_y, "cHRM Red Y"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   139
       png_fixed(png_ptr, green_x, "cHRM Green X"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   140
       png_fixed(png_ptr, green_y, "cHRM Green Y"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   141
       png_fixed(png_ptr, blue_x, "cHRM Blue X"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   142
       png_fixed(png_ptr, blue_y, "cHRM Blue Y"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
}
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   144
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   145
void PNGAPI
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   146
png_set_cHRM_XYZ(png_const_structrp png_ptr, png_inforp info_ptr, double red_X,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   147
    double red_Y, double red_Z, double green_X, double green_Y, double green_Z,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   148
    double blue_X, double blue_Y, double blue_Z)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   149
{
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   150
   png_set_cHRM_XYZ_fixed(png_ptr, info_ptr,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   151
       png_fixed(png_ptr, red_X, "cHRM Red X"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   152
       png_fixed(png_ptr, red_Y, "cHRM Red Y"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   153
       png_fixed(png_ptr, red_Z, "cHRM Red Z"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   154
       png_fixed(png_ptr, green_X, "cHRM Green X"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   155
       png_fixed(png_ptr, green_Y, "cHRM Green Y"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   156
       png_fixed(png_ptr, green_Z, "cHRM Green Z"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   157
       png_fixed(png_ptr, blue_X, "cHRM Blue X"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   158
       png_fixed(png_ptr, blue_Y, "cHRM Blue Y"),
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   159
       png_fixed(png_ptr, blue_Z, "cHRM Blue Z"));
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   160
}
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   161
#  endif /* FLOATING_POINT */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   162
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   163
#endif /* cHRM */
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   164
48280
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   165
#ifdef PNG_eXIf_SUPPORTED
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   166
void PNGAPI
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   167
png_set_eXIf(png_const_structrp png_ptr, png_inforp info_ptr,
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   168
    const png_bytep eXIf_buf)
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   169
{
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   170
  png_warning(png_ptr, "png_set_eXIf does not work; use png_set_eXIf_1");
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   171
  PNG_UNUSED(info_ptr)
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   172
  PNG_UNUSED(eXIf_buf)
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   173
}
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   174
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   175
void PNGAPI
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   176
png_set_eXIf_1(png_const_structrp png_ptr, png_inforp info_ptr,
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   177
    const png_uint_32 num_exif, const png_bytep eXIf_buf)
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   178
{
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   179
   int i;
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   180
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   181
   png_debug1(1, "in %s storage function", "eXIf");
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   182
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   183
   if (png_ptr == NULL || info_ptr == NULL)
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   184
      return;
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   185
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   186
   if (info_ptr->exif)
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   187
   {
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   188
      png_free(png_ptr, info_ptr->exif);
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   189
      info_ptr->exif = NULL;
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   190
   }
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   191
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   192
   info_ptr->num_exif = num_exif;
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   193
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   194
   info_ptr->exif = png_voidcast(png_bytep, png_malloc_warn(png_ptr,
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   195
       info_ptr->num_exif));
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   196
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   197
   if (info_ptr->exif == NULL)
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   198
   {
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   199
      png_warning(png_ptr, "Insufficient memory for eXIf chunk data");
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   200
      return;
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   201
   }
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   202
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   203
   info_ptr->free_me |= PNG_FREE_EXIF;
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   204
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   205
   for (i = 0; i < (int) info_ptr->num_exif; i++)
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   206
      info_ptr->exif[i] = eXIf_buf[i];
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   207
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   208
   info_ptr->valid |= PNG_INFO_eXIf;
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   209
}
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   210
#endif /* eXIf */
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
   211
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   212
#ifdef PNG_gAMA_SUPPORTED
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   213
void PNGFAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   214
png_set_gAMA_fixed(png_const_structrp png_ptr, png_inforp info_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   215
    png_fixed_point file_gamma)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   217
   png_debug1(1, "in %s storage function", "gAMA");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   218
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   221
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   222
   png_colorspace_set_gamma(png_ptr, &info_ptr->colorspace, file_gamma);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   223
   png_colorspace_sync_info(png_ptr, info_ptr);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   224
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   226
#  ifdef PNG_FLOATING_POINT_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   227
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   228
png_set_gAMA(png_const_structrp png_ptr, png_inforp info_ptr, double file_gamma)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   229
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   230
   png_set_gAMA_fixed(png_ptr, info_ptr, png_fixed(png_ptr, file_gamma,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   231
       "png_set_gAMA"));
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   232
}
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   233
#  endif
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   234
#endif
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   235
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   236
#ifdef PNG_hIST_SUPPORTED
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   237
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   238
png_set_hIST(png_const_structrp png_ptr, png_inforp info_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   239
    png_const_uint_16p hist)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   240
{
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   241
   int i;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   242
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   243
   png_debug1(1, "in %s storage function", "hIST");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   244
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   248
   if (info_ptr->num_palette == 0 || info_ptr->num_palette
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
       > PNG_MAX_PALETTE_LENGTH)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
   {
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   251
      png_warning(png_ptr,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   252
          "Invalid palette size, hIST allocation skipped");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   253
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   254
      return;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
   }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
90ce3da70b43 Initial load
duke
parents:
diff changeset
   257
   png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   258
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   259
   /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   260
    * version 1.2.1
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   261
    */
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   262
   info_ptr->hist = png_voidcast(png_uint_16p, png_malloc_warn(png_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   263
       PNG_MAX_PALETTE_LENGTH * (sizeof (png_uint_16))));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   264
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   265
   if (info_ptr->hist == NULL)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   266
   {
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   267
      png_warning(png_ptr, "Insufficient memory for hIST chunk data");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   268
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   269
      return;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   270
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   272
   info_ptr->free_me |= PNG_FREE_HIST;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   273
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   274
   for (i = 0; i < info_ptr->num_palette; i++)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   275
      info_ptr->hist[i] = hist[i];
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   276
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
   info_ptr->valid |= PNG_INFO_hIST;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
90ce3da70b43 Initial load
duke
parents:
diff changeset
   281
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   282
png_set_IHDR(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   283
    png_uint_32 width, png_uint_32 height, int bit_depth,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   284
    int color_type, int interlace_type, int compression_type,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   285
    int filter_type)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   286
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   287
   png_debug1(1, "in %s storage function", "IHDR");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   288
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   289
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   290
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   291
90ce3da70b43 Initial load
duke
parents:
diff changeset
   292
   info_ptr->width = width;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   293
   info_ptr->height = height;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   294
   info_ptr->bit_depth = (png_byte)bit_depth;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   295
   info_ptr->color_type = (png_byte)color_type;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   296
   info_ptr->compression_type = (png_byte)compression_type;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   297
   info_ptr->filter_type = (png_byte)filter_type;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   298
   info_ptr->interlace_type = (png_byte)interlace_type;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   299
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   300
   png_check_IHDR (png_ptr, info_ptr->width, info_ptr->height,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   301
       info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   302
       info_ptr->compression_type, info_ptr->filter_type);
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   303
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   304
   if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   305
      info_ptr->channels = 1;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   306
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   307
   else if ((info_ptr->color_type & PNG_COLOR_MASK_COLOR) != 0)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   308
      info_ptr->channels = 3;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   309
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   310
   else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   311
      info_ptr->channels = 1;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   312
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   313
   if ((info_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   314
      info_ptr->channels++;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   315
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   316
   info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   317
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   318
   info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   319
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   320
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   321
#ifdef PNG_oFFs_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   322
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   323
png_set_oFFs(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   324
    png_int_32 offset_x, png_int_32 offset_y, int unit_type)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   325
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   326
   png_debug1(1, "in %s storage function", "oFFs");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   327
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   328
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   329
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   330
90ce3da70b43 Initial load
duke
parents:
diff changeset
   331
   info_ptr->x_offset = offset_x;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   332
   info_ptr->y_offset = offset_y;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   333
   info_ptr->offset_unit_type = (png_byte)unit_type;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   334
   info_ptr->valid |= PNG_INFO_oFFs;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   335
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   336
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   337
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   338
#ifdef PNG_pCAL_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   339
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   340
png_set_pCAL(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   341
    png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   342
    int nparams, png_const_charp units, png_charpp params)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   343
{
51304
66d9993dd4ad 8208353: Upgrade JDK 11 to libpng 1.6.35
prr
parents: 48280
diff changeset
   344
   size_t length;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   345
   int i;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   346
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   347
   png_debug1(1, "in %s storage function", "pCAL");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   348
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   349
   if (png_ptr == NULL || info_ptr == NULL || purpose == NULL || units == NULL
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   350
       || (nparams > 0 && params == NULL))
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   351
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   352
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   353
   length = strlen(purpose) + 1;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   354
   png_debug1(3, "allocating purpose for info (%lu bytes)",
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   355
       (unsigned long)length);
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   356
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   357
   /* TODO: validate format of calibration name and unit name */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   358
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   359
   /* Check that the type matches the specification. */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   360
   if (type < 0 || type > 3)
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   361
   {
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   362
      png_chunk_report(png_ptr, "Invalid pCAL equation type",
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   363
            PNG_CHUNK_WRITE_ERROR);
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   364
      return;
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   365
   }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   366
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   367
   if (nparams < 0 || nparams > 255)
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   368
   {
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   369
      png_chunk_report(png_ptr, "Invalid pCAL parameter count",
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   370
            PNG_CHUNK_WRITE_ERROR);
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   371
      return;
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   372
   }
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   373
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   374
   /* Validate params[nparams] */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   375
   for (i=0; i<nparams; ++i)
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   376
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   377
      if (params[i] == NULL ||
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   378
          !png_check_fp_string(params[i], strlen(params[i])))
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   379
      {
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   380
         png_chunk_report(png_ptr, "Invalid format for pCAL parameter",
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   381
               PNG_CHUNK_WRITE_ERROR);
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   382
         return;
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   383
      }
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   384
   }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   385
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   386
   info_ptr->pcal_purpose = png_voidcast(png_charp,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   387
       png_malloc_warn(png_ptr, length));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   388
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   389
   if (info_ptr->pcal_purpose == NULL)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   390
   {
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   391
      png_chunk_report(png_ptr, "Insufficient memory for pCAL purpose",
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   392
            PNG_CHUNK_WRITE_ERROR);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   393
      return;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   394
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   395
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   396
   memcpy(info_ptr->pcal_purpose, purpose, length);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   397
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   398
   png_debug(3, "storing X0, X1, type, and nparams in info");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   399
   info_ptr->pcal_X0 = X0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   400
   info_ptr->pcal_X1 = X1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   401
   info_ptr->pcal_type = (png_byte)type;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   402
   info_ptr->pcal_nparams = (png_byte)nparams;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   403
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   404
   length = strlen(units) + 1;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   405
   png_debug1(3, "allocating units for info (%lu bytes)",
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   406
       (unsigned long)length);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   407
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   408
   info_ptr->pcal_units = png_voidcast(png_charp,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   409
       png_malloc_warn(png_ptr, length));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   410
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   411
   if (info_ptr->pcal_units == NULL)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   412
   {
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   413
      png_warning(png_ptr, "Insufficient memory for pCAL units");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   414
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   415
      return;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   416
   }
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   417
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   418
   memcpy(info_ptr->pcal_units, units, length);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   419
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   420
   info_ptr->pcal_params = png_voidcast(png_charpp, png_malloc_warn(png_ptr,
51304
66d9993dd4ad 8208353: Upgrade JDK 11 to libpng 1.6.35
prr
parents: 48280
diff changeset
   421
       (size_t)(((unsigned int)nparams + 1) * (sizeof (png_charp)))));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   422
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   423
   if (info_ptr->pcal_params == NULL)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   424
   {
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   425
      png_warning(png_ptr, "Insufficient memory for pCAL params");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   426
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   427
      return;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   428
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   429
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   430
   memset(info_ptr->pcal_params, 0, ((unsigned int)nparams + 1) *
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   431
       (sizeof (png_charp)));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   432
90ce3da70b43 Initial load
duke
parents:
diff changeset
   433
   for (i = 0; i < nparams; i++)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   434
   {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   435
      length = strlen(params[i]) + 1;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   436
      png_debug2(3, "allocating parameter %d for info (%lu bytes)", i,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   437
          (unsigned long)length);
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   438
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   439
      info_ptr->pcal_params[i] = (png_charp)png_malloc_warn(png_ptr, length);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   440
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   441
      if (info_ptr->pcal_params[i] == NULL)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   442
      {
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   443
         png_warning(png_ptr, "Insufficient memory for pCAL parameter");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   444
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   445
         return;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   446
      }
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   447
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   448
      memcpy(info_ptr->pcal_params[i], params[i], length);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   449
   }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   450
90ce3da70b43 Initial load
duke
parents:
diff changeset
   451
   info_ptr->valid |= PNG_INFO_pCAL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   452
   info_ptr->free_me |= PNG_FREE_PCAL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   453
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   454
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   455
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   456
#ifdef PNG_sCAL_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   457
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   458
png_set_sCAL_s(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   459
    int unit, png_const_charp swidth, png_const_charp sheight)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   460
{
51304
66d9993dd4ad 8208353: Upgrade JDK 11 to libpng 1.6.35
prr
parents: 48280
diff changeset
   461
   size_t lengthw = 0, lengthh = 0;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   462
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   463
   png_debug1(1, "in %s storage function", "sCAL");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   464
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   465
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   466
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   467
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   468
   /* Double check the unit (should never get here with an invalid
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   469
    * unit unless this is an API call.)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   470
    */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   471
   if (unit != 1 && unit != 2)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   472
      png_error(png_ptr, "Invalid sCAL unit");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   473
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   474
   if (swidth == NULL || (lengthw = strlen(swidth)) == 0 ||
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   475
       swidth[0] == 45 /* '-' */ || !png_check_fp_string(swidth, lengthw))
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   476
      png_error(png_ptr, "Invalid sCAL width");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   477
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   478
   if (sheight == NULL || (lengthh = strlen(sheight)) == 0 ||
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   479
       sheight[0] == 45 /* '-' */ || !png_check_fp_string(sheight, lengthh))
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   480
      png_error(png_ptr, "Invalid sCAL height");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   481
90ce3da70b43 Initial load
duke
parents:
diff changeset
   482
   info_ptr->scal_unit = (png_byte)unit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   483
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   484
   ++lengthw;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   485
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   486
   png_debug1(3, "allocating unit for info (%u bytes)", (unsigned int)lengthw);
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   487
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   488
   info_ptr->scal_s_width = png_voidcast(png_charp,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   489
       png_malloc_warn(png_ptr, lengthw));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   490
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   491
   if (info_ptr->scal_s_width == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   492
   {
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   493
      png_warning(png_ptr, "Memory allocation failed while processing sCAL");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   494
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   495
      return;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   496
   }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   497
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   498
   memcpy(info_ptr->scal_s_width, swidth, lengthw);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   499
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   500
   ++lengthh;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   501
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   502
   png_debug1(3, "allocating unit for info (%u bytes)", (unsigned int)lengthh);
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   503
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   504
   info_ptr->scal_s_height = png_voidcast(png_charp,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   505
       png_malloc_warn(png_ptr, lengthh));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   506
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   507
   if (info_ptr->scal_s_height == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   508
   {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   509
      png_free (png_ptr, info_ptr->scal_s_width);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   510
      info_ptr->scal_s_width = NULL;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   511
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   512
      png_warning(png_ptr, "Memory allocation failed while processing sCAL");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   513
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   514
      return;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   515
   }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   516
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   517
   memcpy(info_ptr->scal_s_height, sheight, lengthh);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   518
90ce3da70b43 Initial load
duke
parents:
diff changeset
   519
   info_ptr->valid |= PNG_INFO_sCAL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   520
   info_ptr->free_me |= PNG_FREE_SCAL;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   521
}
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   522
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   523
#  ifdef PNG_FLOATING_POINT_SUPPORTED
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   524
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   525
png_set_sCAL(png_const_structrp png_ptr, png_inforp info_ptr, int unit,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   526
    double width, double height)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   527
{
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   528
   png_debug1(1, "in %s storage function", "sCAL");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   529
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   530
   /* Check the arguments. */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   531
   if (width <= 0)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   532
      png_warning(png_ptr, "Invalid sCAL width ignored");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   533
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   534
   else if (height <= 0)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   535
      png_warning(png_ptr, "Invalid sCAL height ignored");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   536
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   537
   else
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   538
   {
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   539
      /* Convert 'width' and 'height' to ASCII. */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   540
      char swidth[PNG_sCAL_MAX_DIGITS+1];
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   541
      char sheight[PNG_sCAL_MAX_DIGITS+1];
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   542
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   543
      png_ascii_from_fp(png_ptr, swidth, (sizeof swidth), width,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   544
          PNG_sCAL_PRECISION);
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   545
      png_ascii_from_fp(png_ptr, sheight, (sizeof sheight), height,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   546
          PNG_sCAL_PRECISION);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   547
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   548
      png_set_sCAL_s(png_ptr, info_ptr, unit, swidth, sheight);
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   549
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   550
}
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   551
#  endif
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   552
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   553
#  ifdef PNG_FIXED_POINT_SUPPORTED
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   554
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   555
png_set_sCAL_fixed(png_const_structrp png_ptr, png_inforp info_ptr, int unit,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   556
    png_fixed_point width, png_fixed_point height)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   557
{
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   558
   png_debug1(1, "in %s storage function", "sCAL");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   559
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   560
   /* Check the arguments. */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   561
   if (width <= 0)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   562
      png_warning(png_ptr, "Invalid sCAL width ignored");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   563
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   564
   else if (height <= 0)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   565
      png_warning(png_ptr, "Invalid sCAL height ignored");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   566
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   567
   else
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   568
   {
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   569
      /* Convert 'width' and 'height' to ASCII. */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   570
      char swidth[PNG_sCAL_MAX_DIGITS+1];
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   571
      char sheight[PNG_sCAL_MAX_DIGITS+1];
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   572
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   573
      png_ascii_from_fixed(png_ptr, swidth, (sizeof swidth), width);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   574
      png_ascii_from_fixed(png_ptr, sheight, (sizeof sheight), height);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   575
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   576
      png_set_sCAL_s(png_ptr, info_ptr, unit, swidth, sheight);
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   577
   }
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   578
}
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   579
#  endif
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   580
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   581
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   582
#ifdef PNG_pHYs_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   583
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   584
png_set_pHYs(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   585
    png_uint_32 res_x, png_uint_32 res_y, int unit_type)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   586
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   587
   png_debug1(1, "in %s storage function", "pHYs");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   588
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   589
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   590
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   591
90ce3da70b43 Initial load
duke
parents:
diff changeset
   592
   info_ptr->x_pixels_per_unit = res_x;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   593
   info_ptr->y_pixels_per_unit = res_y;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   594
   info_ptr->phys_unit_type = (png_byte)unit_type;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   595
   info_ptr->valid |= PNG_INFO_pHYs;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   596
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   597
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   598
90ce3da70b43 Initial load
duke
parents:
diff changeset
   599
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   600
png_set_PLTE(png_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   601
    png_const_colorp palette, int num_palette)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   602
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   603
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   604
   png_uint_32 max_palette_length;
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   605
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   606
   png_debug1(1, "in %s storage function", "PLTE");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   607
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   608
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   609
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   610
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   611
   max_palette_length = (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ?
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   612
      (1 << info_ptr->bit_depth) : PNG_MAX_PALETTE_LENGTH;
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   613
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   614
   if (num_palette < 0 || num_palette > (int) max_palette_length)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   615
   {
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   616
      if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   617
         png_error(png_ptr, "Invalid palette length");
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   618
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   619
      else
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   620
      {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   621
         png_warning(png_ptr, "Invalid palette length");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   622
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   623
         return;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   624
      }
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   625
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   626
23903
3e78d4a02113 8031352: Enhance PNG handling
serb
parents: 10576
diff changeset
   627
   if ((num_palette > 0 && palette == NULL) ||
3e78d4a02113 8031352: Enhance PNG handling
serb
parents: 10576
diff changeset
   628
      (num_palette == 0
3e78d4a02113 8031352: Enhance PNG handling
serb
parents: 10576
diff changeset
   629
#        ifdef PNG_MNG_FEATURES_SUPPORTED
3e78d4a02113 8031352: Enhance PNG handling
serb
parents: 10576
diff changeset
   630
            && (png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) == 0
3e78d4a02113 8031352: Enhance PNG handling
serb
parents: 10576
diff changeset
   631
#        endif
3e78d4a02113 8031352: Enhance PNG handling
serb
parents: 10576
diff changeset
   632
      ))
3e78d4a02113 8031352: Enhance PNG handling
serb
parents: 10576
diff changeset
   633
   {
3e78d4a02113 8031352: Enhance PNG handling
serb
parents: 10576
diff changeset
   634
      png_error(png_ptr, "Invalid palette");
3e78d4a02113 8031352: Enhance PNG handling
serb
parents: 10576
diff changeset
   635
   }
3e78d4a02113 8031352: Enhance PNG handling
serb
parents: 10576
diff changeset
   636
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   637
   /* It may not actually be necessary to set png_ptr->palette here;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   638
    * we do it for backward compatibility with the way the png_handle_tRNS
90ce3da70b43 Initial load
duke
parents:
diff changeset
   639
    * function used to do the allocation.
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   640
    *
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   641
    * 1.6.0: the above statement appears to be incorrect; something has to set
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   642
    * the palette inside png_struct on read.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   643
    */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   644
   png_free_data(png_ptr, info_ptr, PNG_FREE_PLTE, 0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   645
90ce3da70b43 Initial load
duke
parents:
diff changeset
   646
   /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   647
    * of num_palette entries, in case of an invalid PNG file or incorrect
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   648
    * call to png_set_PLTE() with too-large sample values.
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   649
    */
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   650
   png_ptr->palette = png_voidcast(png_colorp, png_calloc(png_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   651
       PNG_MAX_PALETTE_LENGTH * (sizeof (png_color))));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   652
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   653
   if (num_palette > 0)
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   654
      memcpy(png_ptr->palette, palette, (unsigned int)num_palette *
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   655
          (sizeof (png_color)));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   656
   info_ptr->palette = png_ptr->palette;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   657
   info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   658
90ce3da70b43 Initial load
duke
parents:
diff changeset
   659
   info_ptr->free_me |= PNG_FREE_PLTE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   660
90ce3da70b43 Initial load
duke
parents:
diff changeset
   661
   info_ptr->valid |= PNG_INFO_PLTE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   662
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   663
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   664
#ifdef PNG_sBIT_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   665
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   666
png_set_sBIT(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   667
    png_const_color_8p sig_bit)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   668
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   669
   png_debug1(1, "in %s storage function", "sBIT");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   670
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   671
   if (png_ptr == NULL || info_ptr == NULL || sig_bit == NULL)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   672
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   673
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   674
   info_ptr->sig_bit = *sig_bit;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   675
   info_ptr->valid |= PNG_INFO_sBIT;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   676
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   677
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   678
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   679
#ifdef PNG_sRGB_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   680
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   681
png_set_sRGB(png_const_structrp png_ptr, png_inforp info_ptr, int srgb_intent)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   682
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   683
   png_debug1(1, "in %s storage function", "sRGB");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   684
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   685
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   686
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   687
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   688
   (void)png_colorspace_set_sRGB(png_ptr, &info_ptr->colorspace, srgb_intent);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   689
   png_colorspace_sync_info(png_ptr, info_ptr);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   690
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   691
90ce3da70b43 Initial load
duke
parents:
diff changeset
   692
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   693
png_set_sRGB_gAMA_and_cHRM(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   694
    int srgb_intent)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   695
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   696
   png_debug1(1, "in %s storage function", "sRGB_gAMA_and_cHRM");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   697
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   698
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   699
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   700
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   701
   if (png_colorspace_set_sRGB(png_ptr, &info_ptr->colorspace,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   702
       srgb_intent) != 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   703
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   704
      /* This causes the gAMA and cHRM to be written too */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   705
      info_ptr->colorspace.flags |=
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   706
         PNG_COLORSPACE_FROM_gAMA|PNG_COLORSPACE_FROM_cHRM;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   707
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   708
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   709
   png_colorspace_sync_info(png_ptr, info_ptr);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   710
}
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   711
#endif /* sRGB */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   712
90ce3da70b43 Initial load
duke
parents:
diff changeset
   713
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   714
#ifdef PNG_iCCP_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   715
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   716
png_set_iCCP(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   717
    png_const_charp name, int compression_type,
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   718
    png_const_bytep profile, png_uint_32 proflen)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   719
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   720
   png_charp new_iccp_name;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   721
   png_bytep new_iccp_profile;
51304
66d9993dd4ad 8208353: Upgrade JDK 11 to libpng 1.6.35
prr
parents: 48280
diff changeset
   722
   size_t length;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   723
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   724
   png_debug1(1, "in %s storage function", "iCCP");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   725
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   726
   if (png_ptr == NULL || info_ptr == NULL || name == NULL || profile == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   727
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   728
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   729
   if (compression_type != PNG_COMPRESSION_TYPE_BASE)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   730
      png_app_error(png_ptr, "Invalid iCCP compression method");
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   731
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   732
   /* Set the colorspace first because this validates the profile; do not
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   733
    * override previously set app cHRM or gAMA here (because likely as not the
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   734
    * application knows better than libpng what the correct values are.)  Pass
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   735
    * the info_ptr color_type field to png_colorspace_set_ICC because in the
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   736
    * write case it has not yet been stored in png_ptr.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   737
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   738
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   739
      int result = png_colorspace_set_ICC(png_ptr, &info_ptr->colorspace, name,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   740
          proflen, profile, info_ptr->color_type);
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   741
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   742
      png_colorspace_sync_info(png_ptr, info_ptr);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   743
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   744
      /* Don't do any of the copying if the profile was bad, or inconsistent. */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   745
      if (result == 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   746
         return;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   747
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   748
      /* But do write the gAMA and cHRM chunks from the profile. */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   749
      info_ptr->colorspace.flags |=
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   750
         PNG_COLORSPACE_FROM_gAMA|PNG_COLORSPACE_FROM_cHRM;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   751
   }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   752
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   753
   length = strlen(name)+1;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   754
   new_iccp_name = png_voidcast(png_charp, png_malloc_warn(png_ptr, length));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   755
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   756
   if (new_iccp_name == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   757
   {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   758
      png_benign_error(png_ptr, "Insufficient memory to process iCCP chunk");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   759
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   760
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   761
   }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   762
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   763
   memcpy(new_iccp_name, name, length);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   764
   new_iccp_profile = png_voidcast(png_bytep,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   765
       png_malloc_warn(png_ptr, proflen));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   766
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   767
   if (new_iccp_profile == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   768
   {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   769
      png_free(png_ptr, new_iccp_name);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   770
      png_benign_error(png_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   771
          "Insufficient memory to process iCCP profile");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   772
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   773
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   774
   }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   775
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   776
   memcpy(new_iccp_profile, profile, proflen);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   777
90ce3da70b43 Initial load
duke
parents:
diff changeset
   778
   png_free_data(png_ptr, info_ptr, PNG_FREE_ICCP, 0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   779
90ce3da70b43 Initial load
duke
parents:
diff changeset
   780
   info_ptr->iccp_proflen = proflen;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   781
   info_ptr->iccp_name = new_iccp_name;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   782
   info_ptr->iccp_profile = new_iccp_profile;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   783
   info_ptr->free_me |= PNG_FREE_ICCP;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   784
   info_ptr->valid |= PNG_INFO_iCCP;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   785
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   786
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   787
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   788
#ifdef PNG_TEXT_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   789
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   790
png_set_text(png_const_structrp png_ptr, png_inforp info_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   791
    png_const_textp text_ptr, int num_text)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   792
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   793
   int ret;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   794
   ret = png_set_text_2(png_ptr, info_ptr, text_ptr, num_text);
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   795
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   796
   if (ret != 0)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   797
      png_error(png_ptr, "Insufficient memory to store text");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   798
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   799
90ce3da70b43 Initial load
duke
parents:
diff changeset
   800
int /* PRIVATE */
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   801
png_set_text_2(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   802
    png_const_textp text_ptr, int num_text)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   803
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   804
   int i;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   805
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   806
   png_debug1(1, "in %lx storage function", png_ptr == NULL ? 0xabadca11U :
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   807
      (unsigned long)png_ptr->chunk_name);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   808
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   809
   if (png_ptr == NULL || info_ptr == NULL || num_text <= 0 || text_ptr == NULL)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   810
      return(0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   811
90ce3da70b43 Initial load
duke
parents:
diff changeset
   812
   /* Make sure we have enough space in the "text" array in info_struct
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   813
    * to hold all of the incoming text_ptr objects.  This compare can't overflow
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   814
    * because max_text >= num_text (anyway, subtract of two positive integers
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   815
    * can't overflow in any case.)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   816
    */
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   817
   if (num_text > info_ptr->max_text - info_ptr->num_text)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   818
   {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   819
      int old_num_text = info_ptr->num_text;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   820
      int max_text;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   821
      png_textp new_text = NULL;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   822
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   823
      /* Calculate an appropriate max_text, checking for overflow. */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   824
      max_text = old_num_text;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   825
      if (num_text <= INT_MAX - max_text)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   826
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   827
         max_text += num_text;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   828
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   829
         /* Round up to a multiple of 8 */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   830
         if (max_text < INT_MAX-8)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   831
            max_text = (max_text + 8) & ~0x7;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   832
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   833
         else
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   834
            max_text = INT_MAX;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   835
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   836
         /* Now allocate a new array and copy the old members in; this does all
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   837
          * the overflow checks.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   838
          */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   839
         new_text = png_voidcast(png_textp,png_realloc_array(png_ptr,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   840
             info_ptr->text, old_num_text, max_text-old_num_text,
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   841
             sizeof *new_text));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   842
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   843
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   844
      if (new_text == NULL)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   845
      {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   846
         png_chunk_report(png_ptr, "too many text chunks",
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   847
             PNG_CHUNK_WRITE_ERROR);
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   848
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   849
         return 1;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   850
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   851
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   852
      png_free(png_ptr, info_ptr->text);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   853
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   854
      info_ptr->text = new_text;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   855
      info_ptr->free_me |= PNG_FREE_TEXT;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   856
      info_ptr->max_text = max_text;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   857
      /* num_text is adjusted below as the entries are copied in */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   858
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   859
      png_debug1(3, "allocated %d entries for info_ptr->text", max_text);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   860
   }
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   861
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   862
   for (i = 0; i < num_text; i++)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   863
   {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   864
      size_t text_length, key_len;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   865
      size_t lang_len, lang_key_len;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   866
      png_textp textp = &(info_ptr->text[info_ptr->num_text]);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   867
90ce3da70b43 Initial load
duke
parents:
diff changeset
   868
      if (text_ptr[i].key == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   869
          continue;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   870
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   871
      if (text_ptr[i].compression < PNG_TEXT_COMPRESSION_NONE ||
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   872
          text_ptr[i].compression >= PNG_TEXT_COMPRESSION_LAST)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   873
      {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   874
         png_chunk_report(png_ptr, "text compression mode is out of range",
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   875
             PNG_CHUNK_WRITE_ERROR);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   876
         continue;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   877
      }
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   878
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   879
      key_len = strlen(text_ptr[i].key);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   880
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   881
      if (text_ptr[i].compression <= 0)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   882
      {
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   883
         lang_len = 0;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   884
         lang_key_len = 0;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   885
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   886
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   887
      else
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   888
#  ifdef PNG_iTXt_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   889
      {
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   890
         /* Set iTXt data */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   891
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   892
         if (text_ptr[i].lang != NULL)
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   893
            lang_len = strlen(text_ptr[i].lang);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   894
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   895
         else
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   896
            lang_len = 0;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   897
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   898
         if (text_ptr[i].lang_key != NULL)
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   899
            lang_key_len = strlen(text_ptr[i].lang_key);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   900
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   901
         else
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   902
            lang_key_len = 0;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   903
      }
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   904
#  else /* iTXt */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   905
      {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   906
         png_chunk_report(png_ptr, "iTXt chunk not supported",
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   907
             PNG_CHUNK_WRITE_ERROR);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   908
         continue;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   909
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   910
#  endif
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   911
90ce3da70b43 Initial load
duke
parents:
diff changeset
   912
      if (text_ptr[i].text == NULL || text_ptr[i].text[0] == '\0')
90ce3da70b43 Initial load
duke
parents:
diff changeset
   913
      {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   914
         text_length = 0;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   915
#  ifdef PNG_iTXt_SUPPORTED
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   916
         if (text_ptr[i].compression > 0)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   917
            textp->compression = PNG_ITXT_COMPRESSION_NONE;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   918
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   919
         else
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   920
#  endif
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   921
            textp->compression = PNG_TEXT_COMPRESSION_NONE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   922
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   923
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   924
      else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   925
      {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   926
         text_length = strlen(text_ptr[i].text);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   927
         textp->compression = text_ptr[i].compression;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   928
      }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   929
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   930
      textp->key = png_voidcast(png_charp,png_malloc_base(png_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   931
          key_len + text_length + lang_len + lang_key_len + 4));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   932
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   933
      if (textp->key == NULL)
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   934
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   935
         png_chunk_report(png_ptr, "text chunk: out of memory",
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
   936
             PNG_CHUNK_WRITE_ERROR);
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
   937
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   938
         return 1;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   939
      }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   940
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   941
      png_debug2(2, "Allocated %lu bytes at %p in png_set_text",
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   942
          (unsigned long)(png_uint_32)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   943
          (key_len + lang_len + lang_key_len + text_length + 4),
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   944
          textp->key);
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   945
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   946
      memcpy(textp->key, text_ptr[i].key, key_len);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   947
      *(textp->key + key_len) = '\0';
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   948
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   949
      if (text_ptr[i].compression > 0)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   950
      {
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   951
         textp->lang = textp->key + key_len + 1;
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   952
         memcpy(textp->lang, text_ptr[i].lang, lang_len);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   953
         *(textp->lang + lang_len) = '\0';
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   954
         textp->lang_key = textp->lang + lang_len + 1;
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   955
         memcpy(textp->lang_key, text_ptr[i].lang_key, lang_key_len);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   956
         *(textp->lang_key + lang_key_len) = '\0';
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   957
         textp->text = textp->lang_key + lang_key_len + 1;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   958
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   959
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   960
      else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   961
      {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   962
         textp->lang=NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   963
         textp->lang_key=NULL;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   964
         textp->text = textp->key + key_len + 1;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   965
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   966
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   967
      if (text_length != 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   968
         memcpy(textp->text, text_ptr[i].text, text_length);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   969
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   970
      *(textp->text + text_length) = '\0';
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   971
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   972
#  ifdef PNG_iTXt_SUPPORTED
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   973
      if (textp->compression > 0)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   974
      {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   975
         textp->text_length = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   976
         textp->itxt_length = text_length;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   977
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   978
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   979
      else
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   980
#  endif
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   981
      {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   982
         textp->text_length = text_length;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   983
         textp->itxt_length = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   984
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   985
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   986
      info_ptr->num_text++;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   987
      png_debug1(3, "transferred text chunk %d", info_ptr->num_text);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   988
   }
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   989
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   990
   return(0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   991
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   992
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   993
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   994
#ifdef PNG_tIME_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   995
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   996
png_set_tIME(png_const_structrp png_ptr, png_inforp info_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
   997
    png_const_timep mod_time)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   998
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
   999
   png_debug1(1, "in %s storage function", "tIME");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1000
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1001
   if (png_ptr == NULL || info_ptr == NULL || mod_time == NULL ||
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1002
       (png_ptr->mode & PNG_WROTE_tIME) != 0)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1003
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1004
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1005
   if (mod_time->month == 0   || mod_time->month > 12  ||
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1006
       mod_time->day   == 0   || mod_time->day   > 31  ||
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1007
       mod_time->hour  > 23   || mod_time->minute > 59 ||
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1008
       mod_time->second > 60)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1009
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1010
      png_warning(png_ptr, "Ignoring invalid time value");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1011
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1012
      return;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1013
   }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1014
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1015
   info_ptr->mod_time = *mod_time;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1016
   info_ptr->valid |= PNG_INFO_tIME;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1017
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1018
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1019
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1020
#ifdef PNG_tRNS_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1021
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1022
png_set_tRNS(png_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1023
    png_const_bytep trans_alpha, int num_trans, png_const_color_16p trans_color)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1024
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1025
   png_debug1(1, "in %s storage function", "tRNS");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1026
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1027
   if (png_ptr == NULL || info_ptr == NULL)
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1028
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1029
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1030
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1031
   if (trans_alpha != NULL)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1032
   {
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1033
       /* It may not actually be necessary to set png_ptr->trans_alpha here;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1034
        * we do it for backward compatibility with the way the png_handle_tRNS
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1035
        * function used to do the allocation.
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1036
        *
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1037
        * 1.6.0: The above statement is incorrect; png_handle_tRNS effectively
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1038
        * relies on png_set_tRNS storing the information in png_struct
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1039
        * (otherwise it won't be there for the code in pngrtran.c).
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1040
        */
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1041
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1042
       png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1043
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1044
       if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH)
40436
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1045
       {
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1046
         /* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1047
          info_ptr->trans_alpha = png_voidcast(png_bytep,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1048
              png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH));
51304
66d9993dd4ad 8208353: Upgrade JDK 11 to libpng 1.6.35
prr
parents: 48280
diff changeset
  1049
          memcpy(info_ptr->trans_alpha, trans_alpha, (size_t)num_trans);
40436
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1050
       }
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1051
       png_ptr->trans_alpha = info_ptr->trans_alpha;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1052
   }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1053
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1054
   if (trans_color != NULL)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1055
   {
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1056
#ifdef PNG_WARNINGS_SUPPORTED
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1057
      if (info_ptr->bit_depth < 16)
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1058
      {
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1059
         int sample_max = (1 << info_ptr->bit_depth) - 1;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1060
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1061
         if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY &&
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1062
             trans_color->gray > sample_max) ||
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1063
             (info_ptr->color_type == PNG_COLOR_TYPE_RGB &&
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1064
             (trans_color->red > sample_max ||
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1065
             trans_color->green > sample_max ||
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1066
             trans_color->blue > sample_max)))
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1067
            png_warning(png_ptr,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1068
                "tRNS chunk has out-of-range samples for bit_depth");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1069
      }
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1070
#endif
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1071
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1072
      info_ptr->trans_color = *trans_color;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1073
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1074
      if (num_trans == 0)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1075
         num_trans = 1;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1076
   }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1077
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1078
   info_ptr->num_trans = (png_uint_16)num_trans;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1079
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1080
   if (num_trans != 0)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1081
   {
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1082
      info_ptr->valid |= PNG_INFO_tRNS;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1083
      info_ptr->free_me |= PNG_FREE_TRNS;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1084
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1085
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1086
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1087
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1088
#ifdef PNG_sPLT_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1089
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1090
png_set_sPLT(png_const_structrp png_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1091
    png_inforp info_ptr, png_const_sPLT_tp entries, int nentries)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1092
/*
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1093
 *  entries        - array of png_sPLT_t structures
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1094
 *                   to be added to the list of palettes
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1095
 *                   in the info structure.
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1096
 *
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1097
 *  nentries       - number of palette structures to be
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1098
 *                   added.
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1099
 */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1100
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1101
   png_sPLT_tp np;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1102
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1103
   if (png_ptr == NULL || info_ptr == NULL || nentries <= 0 || entries == NULL)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1104
      return;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1105
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1106
   /* Use the internal realloc function, which checks for all the possible
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1107
    * overflows.  Notice that the parameters are (int) and (size_t)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1108
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1109
   np = png_voidcast(png_sPLT_tp,png_realloc_array(png_ptr,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1110
       info_ptr->splt_palettes, info_ptr->splt_palettes_num, nentries,
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1111
       sizeof *np));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1112
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1113
   if (np == NULL)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1114
   {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1115
      /* Out of memory or too many chunks */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1116
      png_chunk_report(png_ptr, "too many sPLT chunks", PNG_CHUNK_WRITE_ERROR);
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1117
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1118
      return;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1119
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1120
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1121
   png_free(png_ptr, info_ptr->splt_palettes);
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1122
   info_ptr->splt_palettes = np;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1123
   info_ptr->free_me |= PNG_FREE_SPLT;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1124
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1125
   np += info_ptr->splt_palettes_num;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1126
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1127
   do
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1128
   {
51304
66d9993dd4ad 8208353: Upgrade JDK 11 to libpng 1.6.35
prr
parents: 48280
diff changeset
  1129
      size_t length;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1130
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1131
      /* Skip invalid input entries */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1132
      if (entries->name == NULL || entries->entries == NULL)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1133
      {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1134
         /* png_handle_sPLT doesn't do this, so this is an app error */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1135
         png_app_error(png_ptr, "png_set_sPLT: invalid sPLT");
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1136
         /* Just skip the invalid entry */
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1137
         continue;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1138
      }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1139
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1140
      np->depth = entries->depth;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1141
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1142
      /* In the event of out-of-memory just return - there's no point keeping
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1143
       * on trying to add sPLT chunks.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1144
       */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1145
      length = strlen(entries->name) + 1;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1146
      np->name = png_voidcast(png_charp, png_malloc_base(png_ptr, length));
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1147
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1148
      if (np->name == NULL)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1149
         break;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1150
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1151
      memcpy(np->name, entries->name, length);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1152
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1153
      /* IMPORTANT: we have memory now that won't get freed if something else
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1154
       * goes wrong; this code must free it.  png_malloc_array produces no
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1155
       * warnings; use a png_chunk_report (below) if there is an error.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1156
       */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1157
      np->entries = png_voidcast(png_sPLT_entryp, png_malloc_array(png_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1158
          entries->nentries, sizeof (png_sPLT_entry)));
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1159
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1160
      if (np->entries == NULL)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1161
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1162
         png_free(png_ptr, np->name);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1163
         np->name = NULL;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1164
         break;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1165
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1166
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1167
      np->nentries = entries->nentries;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1168
      /* This multiply can't overflow because png_malloc_array has already
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1169
       * checked it when doing the allocation.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1170
       */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1171
      memcpy(np->entries, entries->entries,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1172
          (unsigned int)entries->nentries * sizeof (png_sPLT_entry));
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1173
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1174
      /* Note that 'continue' skips the advance of the out pointer and out
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1175
       * count, so an invalid entry is not added.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1176
       */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1177
      info_ptr->valid |= PNG_INFO_sPLT;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1178
      ++(info_ptr->splt_palettes_num);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1179
      ++np;
48280
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
  1180
      ++entries;
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1181
   }
48280
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
  1182
   while (--nentries);
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1183
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1184
   if (nentries > 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1185
      png_chunk_report(png_ptr, "sPLT out of memory", PNG_CHUNK_WRITE_ERROR);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1186
}
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1187
#endif /* sPLT */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1188
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1189
#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1190
static png_byte
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1191
check_location(png_const_structrp png_ptr, int location)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1192
{
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1193
   location &= (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1194
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1195
   /* New in 1.6.0; copy the location and check it.  This is an API
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1196
    * change; previously the app had to use the
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1197
    * png_set_unknown_chunk_location API below for each chunk.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1198
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1199
   if (location == 0 && (png_ptr->mode & PNG_IS_READ_STRUCT) == 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1200
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1201
      /* Write struct, so unknown chunks come from the app */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1202
      png_app_warning(png_ptr,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1203
          "png_set_unknown_chunks now expects a valid location");
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1204
      /* Use the old behavior */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1205
      location = (png_byte)(png_ptr->mode &
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1206
          (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1207
   }
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1208
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1209
   /* This need not be an internal error - if the app calls
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1210
    * png_set_unknown_chunks on a read pointer it must get the location right.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1211
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1212
   if (location == 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1213
      png_error(png_ptr, "invalid location in png_set_unknown_chunks");
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1214
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1215
   /* Now reduce the location to the top-most set bit by removing each least
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1216
    * significant bit in turn.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1217
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1218
   while (location != (location & -location))
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1219
      location &= ~(location & -location);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1220
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1221
   /* The cast is safe because 'location' is a bit mask and only the low four
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1222
    * bits are significant.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1223
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1224
   return (png_byte)location;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1225
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1226
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1227
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1228
png_set_unknown_chunks(png_const_structrp png_ptr,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1229
    png_inforp info_ptr, png_const_unknown_chunkp unknowns, int num_unknowns)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1230
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1231
   png_unknown_chunkp np;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1232
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1233
   if (png_ptr == NULL || info_ptr == NULL || num_unknowns <= 0 ||
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1234
       unknowns == NULL)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1235
      return;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1236
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1237
   /* Check for the failure cases where support has been disabled at compile
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1238
    * time.  This code is hardly ever compiled - it's here because
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1239
    * STORE_UNKNOWN_CHUNKS is set by both read and write code (compiling in this
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1240
    * code) but may be meaningless if the read or write handling of unknown
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1241
    * chunks is not compiled in.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1242
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1243
#  if !defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) && \
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1244
      defined(PNG_READ_SUPPORTED)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1245
      if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1246
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1247
         png_app_error(png_ptr, "no unknown chunk support on read");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1248
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1249
         return;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1250
      }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1251
#  endif
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1252
#  if !defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED) && \
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1253
      defined(PNG_WRITE_SUPPORTED)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1254
      if ((png_ptr->mode & PNG_IS_READ_STRUCT) == 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1255
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1256
         png_app_error(png_ptr, "no unknown chunk support on write");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1257
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1258
         return;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1259
      }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1260
#  endif
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1261
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1262
   /* Prior to 1.6.0 this code used png_malloc_warn; however, this meant that
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1263
    * unknown critical chunks could be lost with just a warning resulting in
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1264
    * undefined behavior.  Now png_chunk_report is used to provide behavior
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1265
    * appropriate to read or write.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1266
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1267
   np = png_voidcast(png_unknown_chunkp, png_realloc_array(png_ptr,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1268
       info_ptr->unknown_chunks, info_ptr->unknown_chunks_num, num_unknowns,
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1269
       sizeof *np));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1270
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1271
   if (np == NULL)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1272
   {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1273
      png_chunk_report(png_ptr, "too many unknown chunks",
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1274
          PNG_CHUNK_WRITE_ERROR);
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1275
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1276
      return;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1277
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1278
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1279
   png_free(png_ptr, info_ptr->unknown_chunks);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1280
   info_ptr->unknown_chunks = np; /* safe because it is initialized */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1281
   info_ptr->free_me |= PNG_FREE_UNKN;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1282
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1283
   np += info_ptr->unknown_chunks_num;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1284
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1285
   /* Increment unknown_chunks_num each time round the loop to protect the
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1286
    * just-allocated chunk data.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1287
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1288
   for (; num_unknowns > 0; --num_unknowns, ++unknowns)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1289
   {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1290
      memcpy(np->name, unknowns->name, (sizeof np->name));
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1291
      np->name[(sizeof np->name)-1] = '\0';
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1292
      np->location = check_location(png_ptr, unknowns->location);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1293
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1294
      if (unknowns->size == 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1295
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1296
         np->data = NULL;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1297
         np->size = 0;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1298
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1299
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1300
      else
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1301
      {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1302
         np->data = png_voidcast(png_bytep,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1303
             png_malloc_base(png_ptr, unknowns->size));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1304
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1305
         if (np->data == NULL)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1306
         {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1307
            png_chunk_report(png_ptr, "unknown chunk: out of memory",
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1308
                PNG_CHUNK_WRITE_ERROR);
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1309
            /* But just skip storing the unknown chunk */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1310
            continue;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1311
         }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1312
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1313
         memcpy(np->data, unknowns->data, unknowns->size);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1314
         np->size = unknowns->size;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1315
      }
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1316
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1317
      /* These increments are skipped on out-of-memory for the data - the
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1318
       * unknown chunk entry gets overwritten if the png_chunk_report returns.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1319
       * This is correct in the read case (the chunk is just dropped.)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1320
       */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1321
      ++np;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1322
      ++(info_ptr->unknown_chunks_num);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1323
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1324
}
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1325
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1326
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1327
png_set_unknown_chunk_location(png_const_structrp png_ptr, png_inforp info_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1328
    int chunk, int location)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1329
{
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1330
   /* This API is pretty pointless in 1.6.0 because the location can be set
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1331
    * before the call to png_set_unknown_chunks.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1332
    *
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1333
    * TODO: add a png_app_warning in 1.7
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1334
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1335
   if (png_ptr != NULL && info_ptr != NULL && chunk >= 0 &&
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1336
      chunk < info_ptr->unknown_chunks_num)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1337
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1338
      if ((location & (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT)) == 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1339
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1340
         png_app_error(png_ptr, "invalid unknown chunk location");
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1341
         /* Fake out the pre 1.6.0 behavior: */
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1342
         if (((unsigned int)location & PNG_HAVE_IDAT) != 0) /* undocumented! */
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1343
            location = PNG_AFTER_IDAT;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1344
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1345
         else
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1346
            location = PNG_HAVE_IHDR; /* also undocumented */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1347
      }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1348
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1349
      info_ptr->unknown_chunks[chunk].location =
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1350
         check_location(png_ptr, location);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1351
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1352
}
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1353
#endif /* STORE_UNKNOWN_CHUNKS */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1354
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1355
#ifdef PNG_MNG_FEATURES_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1356
png_uint_32 PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1357
png_permit_mng_features (png_structrp png_ptr, png_uint_32 mng_features)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1358
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1359
   png_debug(1, "in png_permit_mng_features");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1360
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1361
   if (png_ptr == NULL)
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1362
      return 0;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1363
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1364
   png_ptr->mng_features_permitted = mng_features & PNG_ALL_MNG_FEATURES;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1365
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1366
   return png_ptr->mng_features_permitted;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1367
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1368
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1369
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1370
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1371
static unsigned int
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1372
add_one_chunk(png_bytep list, unsigned int count, png_const_bytep add, int keep)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1373
{
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1374
   unsigned int i;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1375
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1376
   /* Utility function: update the 'keep' state of a chunk if it is already in
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1377
    * the list, otherwise add it to the list.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1378
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1379
   for (i=0; i<count; ++i, list += 5)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1380
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1381
      if (memcmp(list, add, 4) == 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1382
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1383
         list[4] = (png_byte)keep;
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1384
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1385
         return count;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1386
      }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1387
   }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1388
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1389
   if (keep != PNG_HANDLE_CHUNK_AS_DEFAULT)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1390
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1391
      ++count;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1392
      memcpy(list, add, 4);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1393
      list[4] = (png_byte)keep;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1394
   }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1395
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1396
   return count;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1397
}
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1398
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1399
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1400
png_set_keep_unknown_chunks(png_structrp png_ptr, int keep,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1401
    png_const_bytep chunk_list, int num_chunks_in)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1402
{
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1403
   png_bytep new_list;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1404
   unsigned int num_chunks, old_num_chunks;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1405
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1406
   if (png_ptr == NULL)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1407
      return;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1408
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1409
   if (keep < 0 || keep >= PNG_HANDLE_CHUNK_LAST)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1410
   {
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1411
      png_app_error(png_ptr, "png_set_keep_unknown_chunks: invalid keep");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1412
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1413
      return;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1414
   }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1415
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1416
   if (num_chunks_in <= 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1417
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1418
      png_ptr->unknown_default = keep;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1419
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1420
      /* '0' means just set the flags, so stop here */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1421
      if (num_chunks_in == 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1422
        return;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1423
   }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1424
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1425
   if (num_chunks_in < 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1426
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1427
      /* Ignore all unknown chunks and all chunks recognized by
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1428
       * libpng except for IHDR, PLTE, tRNS, IDAT, and IEND
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1429
       */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1430
      static PNG_CONST png_byte chunks_to_ignore[] = {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1431
         98,  75,  71,  68, '\0',  /* bKGD */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1432
         99,  72,  82,  77, '\0',  /* cHRM */
48280
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
  1433
        101,  88,  73, 102, '\0',  /* eXIf */
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1434
        103,  65,  77,  65, '\0',  /* gAMA */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1435
        104,  73,  83,  84, '\0',  /* hIST */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1436
        105,  67,  67,  80, '\0',  /* iCCP */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1437
        105,  84,  88, 116, '\0',  /* iTXt */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1438
        111,  70,  70, 115, '\0',  /* oFFs */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1439
        112,  67,  65,  76, '\0',  /* pCAL */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1440
        112,  72,  89, 115, '\0',  /* pHYs */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1441
        115,  66,  73,  84, '\0',  /* sBIT */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1442
        115,  67,  65,  76, '\0',  /* sCAL */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1443
        115,  80,  76,  84, '\0',  /* sPLT */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1444
        115,  84,  69,  82, '\0',  /* sTER */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1445
        115,  82,  71,  66, '\0',  /* sRGB */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1446
        116,  69,  88, 116, '\0',  /* tEXt */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1447
        116,  73,  77,  69, '\0',  /* tIME */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1448
        122,  84,  88, 116, '\0'   /* zTXt */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1449
      };
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1450
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1451
      chunk_list = chunks_to_ignore;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1452
      num_chunks = (unsigned int)/*SAFE*/(sizeof chunks_to_ignore)/5U;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1453
   }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1454
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1455
   else /* num_chunks_in > 0 */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1456
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1457
      if (chunk_list == NULL)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1458
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1459
         /* Prior to 1.6.0 this was silently ignored, now it is an app_error
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1460
          * which can be switched off.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1461
          */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1462
         png_app_error(png_ptr, "png_set_keep_unknown_chunks: no chunk list");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1463
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1464
         return;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1465
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1466
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1467
      num_chunks = (unsigned int)num_chunks_in;
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1468
   }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1469
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1470
   old_num_chunks = png_ptr->num_chunk_list;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1471
   if (png_ptr->chunk_list == NULL)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1472
      old_num_chunks = 0;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1473
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1474
   /* Since num_chunks is always restricted to UINT_MAX/5 this can't overflow.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1475
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1476
   if (num_chunks + old_num_chunks > UINT_MAX/5)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1477
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1478
      png_app_error(png_ptr, "png_set_keep_unknown_chunks: too many chunks");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1479
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1480
      return;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1481
   }
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1482
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1483
   /* If these chunks are being reset to the default then no more memory is
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1484
    * required because add_one_chunk above doesn't extend the list if the 'keep'
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1485
    * parameter is the default.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1486
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1487
   if (keep != 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1488
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1489
      new_list = png_voidcast(png_bytep, png_malloc(png_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1490
          5 * (num_chunks + old_num_chunks)));
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1491
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1492
      if (old_num_chunks > 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1493
         memcpy(new_list, png_ptr->chunk_list, 5*old_num_chunks);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1494
   }
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1495
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1496
   else if (old_num_chunks > 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1497
      new_list = png_ptr->chunk_list;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1498
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1499
   else
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1500
      new_list = NULL;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1501
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1502
   /* Add the new chunks together with each one's handling code.  If the chunk
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1503
    * already exists the code is updated, otherwise the chunk is added to the
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1504
    * end.  (In libpng 1.6.0 order no longer matters because this code enforces
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1505
    * the earlier convention that the last setting is the one that is used.)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1506
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1507
   if (new_list != NULL)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1508
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1509
      png_const_bytep inlist;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1510
      png_bytep outlist;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1511
      unsigned int i;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1512
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1513
      for (i=0; i<num_chunks; ++i)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1514
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1515
         old_num_chunks = add_one_chunk(new_list, old_num_chunks,
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1516
             chunk_list+5*i, keep);
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1517
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1518
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1519
      /* Now remove any spurious 'default' entries. */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1520
      num_chunks = 0;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1521
      for (i=0, inlist=outlist=new_list; i<old_num_chunks; ++i, inlist += 5)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1522
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1523
         if (inlist[4])
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1524
         {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1525
            if (outlist != inlist)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1526
               memcpy(outlist, inlist, 5);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1527
            outlist += 5;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1528
            ++num_chunks;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1529
         }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1530
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1531
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1532
      /* This means the application has removed all the specialized handling. */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1533
      if (num_chunks == 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1534
      {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1535
         if (png_ptr->chunk_list != new_list)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1536
            png_free(png_ptr, new_list);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1537
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1538
         new_list = NULL;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1539
      }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1540
   }
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1541
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1542
   else
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1543
      num_chunks = 0;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1544
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1545
   png_ptr->num_chunk_list = num_chunks;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1546
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1547
   if (png_ptr->chunk_list != new_list)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1548
   {
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1549
      if (png_ptr->chunk_list != NULL)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1550
         png_free(png_ptr, png_ptr->chunk_list);
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1551
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1552
      png_ptr->chunk_list = new_list;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1553
   }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1554
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1555
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1556
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1557
#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1558
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1559
png_set_read_user_chunk_fn(png_structrp png_ptr, png_voidp user_chunk_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1560
    png_user_chunk_ptr read_user_chunk_fn)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1561
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1562
   png_debug(1, "in png_set_read_user_chunk_fn");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1563
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1564
   if (png_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1565
      return;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1566
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1567
   png_ptr->read_user_chunk_fn = read_user_chunk_fn;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1568
   png_ptr->user_chunk_ptr = user_chunk_ptr;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1569
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1570
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1571
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1572
#ifdef PNG_INFO_IMAGE_SUPPORTED
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1573
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1574
png_set_rows(png_const_structrp png_ptr, png_inforp info_ptr,
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1575
    png_bytepp row_pointers)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1576
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1577
   png_debug1(1, "in %s storage function", "rows");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1578
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1579
   if (png_ptr == NULL || info_ptr == NULL)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1580
      return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1581
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1582
   if (info_ptr->row_pointers != NULL &&
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1583
       (info_ptr->row_pointers != row_pointers))
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1584
      png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1585
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1586
   info_ptr->row_pointers = row_pointers;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1587
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1588
   if (row_pointers != NULL)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1589
      info_ptr->valid |= PNG_INFO_IDAT;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1590
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1591
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1592
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1593
void PNGAPI
51304
66d9993dd4ad 8208353: Upgrade JDK 11 to libpng 1.6.35
prr
parents: 48280
diff changeset
  1594
png_set_compression_buffer_size(png_structrp png_ptr, size_t size)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1595
{
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1596
   if (png_ptr == NULL)
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1597
      return;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1598
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1599
   if (size == 0 || size > PNG_UINT_31_MAX)
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1600
      png_error(png_ptr, "invalid compression buffer size");
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1601
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1602
#  ifdef PNG_SEQUENTIAL_READ_SUPPORTED
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1603
   if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0)
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1604
   {
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1605
      png_ptr->IDAT_read_size = (png_uint_32)size; /* checked above */
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1606
      return;
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1607
   }
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1608
#  endif
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1609
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1610
#  ifdef PNG_WRITE_SUPPORTED
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1611
   if ((png_ptr->mode & PNG_IS_READ_STRUCT) == 0)
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1612
   {
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1613
      if (png_ptr->zowner != 0)
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1614
      {
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1615
         png_warning(png_ptr,
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1616
             "Compression buffer size cannot be changed because it is in use");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1617
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1618
         return;
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1619
      }
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1620
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1621
#ifndef __COVERITY__
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1622
      /* Some compilers complain that this is always false.  However, it
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1623
       * can be true when integer overflow happens.
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1624
       */
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1625
      if (size > ZLIB_IO_MAX)
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1626
      {
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1627
         png_warning(png_ptr,
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1628
             "Compression buffer size limited to system maximum");
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1629
         size = ZLIB_IO_MAX; /* must fit */
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1630
      }
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1631
#endif
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1632
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1633
      if (size < 6)
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1634
      {
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1635
         /* Deflate will potentially go into an infinite loop on a SYNC_FLUSH
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1636
          * if this is permitted.
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1637
          */
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1638
         png_warning(png_ptr,
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1639
             "Compression buffer size cannot be reduced below 6");
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1640
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1641
         return;
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1642
      }
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1643
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1644
      if (png_ptr->zbuffer_size != size)
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1645
      {
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1646
         png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list);
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1647
         png_ptr->zbuffer_size = (uInt)size;
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1648
      }
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1649
   }
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1650
#  endif
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1651
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1652
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1653
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1654
png_set_invalid(png_const_structrp png_ptr, png_inforp info_ptr, int mask)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1655
{
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1656
   if (png_ptr != NULL && info_ptr != NULL)
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1657
      info_ptr->valid &= (unsigned int)(~mask);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1658
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1659
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1660
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1661
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1662
/* This function was added to libpng 1.2.6 */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1663
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1664
png_set_user_limits (png_structrp png_ptr, png_uint_32 user_width_max,
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1665
    png_uint_32 user_height_max)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1666
{
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1667
   /* Images with dimensions larger than these limits will be
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1668
    * rejected by png_set_IHDR().  To accept any PNG datastream
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1669
    * regardless of dimensions, set both limits to 0x7fffffff.
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1670
    */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1671
   if (png_ptr == NULL)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1672
      return;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1673
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1674
   png_ptr->user_width_max = user_width_max;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1675
   png_ptr->user_height_max = user_height_max;
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1676
}
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1677
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1678
/* This function was added to libpng 1.4.0 */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1679
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1680
png_set_chunk_cache_max (png_structrp png_ptr, png_uint_32 user_chunk_cache_max)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1681
{
35296
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1682
   if (png_ptr != NULL)
659e92aaf7f4 8143941: Update splashscreen displays
azvegint
parents: 29913
diff changeset
  1683
      png_ptr->user_chunk_cache_max = user_chunk_cache_max;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1684
}
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1685
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1686
/* This function was added to libpng 1.4.1 */
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1687
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1688
png_set_chunk_malloc_max (png_structrp png_ptr,
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1689
    png_alloc_size_t user_chunk_malloc_max)
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1690
{
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1691
   if (png_ptr != NULL)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1692
      png_ptr->user_chunk_malloc_max = user_chunk_malloc_max;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1693
}
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1694
#endif /* ?SET_USER_LIMITS */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1695
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1696
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1697
#ifdef PNG_BENIGN_ERRORS_SUPPORTED
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1698
void PNGAPI
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1699
png_set_benign_errors(png_structrp png_ptr, int allowed)
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1700
{
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1701
   png_debug(1, "in png_set_benign_errors");
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1702
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1703
   /* If allowed is 1, png_benign_error() is treated as a warning.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1704
    *
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1705
    * If allowed is 0, png_benign_error() is treated as an error (which
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1706
    * is the default behavior if png_set_benign_errors() is not called).
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1707
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1708
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1709
   if (allowed != 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1710
      png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN |
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1711
         PNG_FLAG_APP_WARNINGS_WARN | PNG_FLAG_APP_ERRORS_WARN;
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1712
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1713
   else
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1714
      png_ptr->flags &= ~(PNG_FLAG_BENIGN_ERRORS_WARN |
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1715
         PNG_FLAG_APP_WARNINGS_WARN | PNG_FLAG_APP_ERRORS_WARN);
10576
db3409425573 7088287: libpng need to be updated.
bae
parents: 5506
diff changeset
  1716
}
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1717
#endif /* BENIGN_ERRORS */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1718
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1719
#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1720
   /* Whether to report invalid palette index; added at libng-1.5.10.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1721
    * It is possible for an indexed (color-type==3) PNG file to contain
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1722
    * pixels with invalid (out-of-range) indexes if the PLTE chunk has
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1723
    * fewer entries than the image's bit-depth would allow. We recover
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1724
    * from this gracefully by filling any incomplete palette with zeros
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1725
    * (opaque black).  By default, when this occurs libpng will issue
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1726
    * a benign error.  This API can be used to override that behavior.
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1727
    */
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1728
void PNGAPI
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1729
png_set_check_for_invalid_index(png_structrp png_ptr, int allowed)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1730
{
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1731
   png_debug(1, "in png_set_check_for_invalid_index");
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1732
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1733
   if (allowed > 0)
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1734
      png_ptr->num_palette_max = 0;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1735
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1736
   else
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1737
      png_ptr->num_palette_max = -1;
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1738
}
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1739
#endif
40436
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1740
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1741
#if defined(PNG_TEXT_SUPPORTED) || defined(PNG_pCAL_SUPPORTED) || \
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1742
    defined(PNG_iCCP_SUPPORTED) || defined(PNG_sPLT_SUPPORTED)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1743
/* Check that the tEXt or zTXt keyword is valid per PNG 1.0 specification,
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1744
 * and if invalid, correct the keyword rather than discarding the entire
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1745
 * chunk.  The PNG 1.0 specification requires keywords 1-79 characters in
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1746
 * length, forbids leading or trailing whitespace, multiple internal spaces,
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1747
 * and the non-break space (0x80) from ISO 8859-1.  Returns keyword length.
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1748
 *
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1749
 * The 'new_key' buffer must be 80 characters in size (for the keyword plus a
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1750
 * trailing '\0').  If this routine returns 0 then there was no keyword, or a
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1751
 * valid one could not be generated, and the caller must png_error.
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1752
 */
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1753
png_uint_32 /* PRIVATE */
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1754
png_check_keyword(png_structrp png_ptr, png_const_charp key, png_bytep new_key)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1755
{
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1756
#ifdef PNG_WARNINGS_SUPPORTED
40436
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1757
   png_const_charp orig_key = key;
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1758
#endif
40436
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1759
   png_uint_32 key_len = 0;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1760
   int bad_character = 0;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1761
   int space = 1;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1762
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1763
   png_debug(1, "in png_check_keyword");
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1764
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1765
   if (key == NULL)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1766
   {
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1767
      *new_key = 0;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1768
      return 0;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1769
   }
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1770
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1771
   while (*key && key_len < 79)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1772
   {
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1773
      png_byte ch = (png_byte)*key++;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1774
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1775
      if ((ch > 32 && ch <= 126) || (ch >= 161 /*&& ch <= 255*/))
48280
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
  1776
      {
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
  1777
         *new_key++ = ch; ++key_len; space = 0;
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
  1778
      }
40436
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1779
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1780
      else if (space == 0)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1781
      {
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1782
         /* A space or an invalid character when one wasn't seen immediately
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1783
          * before; output just a space.
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1784
          */
48280
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
  1785
         *new_key++ = 32; ++key_len; space = 1;
40436
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1786
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1787
         /* If the character was not a space then it is invalid. */
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1788
         if (ch != 32)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1789
            bad_character = ch;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1790
      }
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1791
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1792
      else if (bad_character == 0)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1793
         bad_character = ch; /* just skip it, record the first error */
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1794
   }
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1795
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1796
   if (key_len > 0 && space != 0) /* trailing space */
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1797
   {
48280
791d551bcdb8 8183960: Upgrade to libpng 1.6.34
prr
parents: 47216
diff changeset
  1798
      --key_len; --new_key;
40436
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1799
      if (bad_character == 0)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1800
         bad_character = 32;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1801
   }
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1802
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1803
   /* Terminate the keyword */
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1804
   *new_key = 0;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1805
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1806
   if (key_len == 0)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1807
      return 0;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1808
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1809
#ifdef PNG_WARNINGS_SUPPORTED
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1810
   /* Try to only output one warning per keyword: */
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1811
   if (*key != 0) /* keyword too long */
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1812
      png_warning(png_ptr, "keyword truncated");
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1813
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1814
   else if (bad_character != 0)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1815
   {
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1816
      PNG_WARNING_PARAMETERS(p)
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1817
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1818
      png_warning_parameter(p, 1, orig_key);
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1819
      png_warning_parameter_signed(p, 2, PNG_NUMBER_FORMAT_02x, bad_character);
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1820
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1821
      png_formatted_warning(png_ptr, p, "keyword \"@1\": bad character '0x@2'");
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1822
   }
43321
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1823
#else /* !WARNINGS */
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1824
   PNG_UNUSED(png_ptr)
2b8d397c03a4 8167228: Update to libpng 1.6.28
prr
parents: 40436
diff changeset
  1825
#endif /* !WARNINGS */
40436
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1826
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1827
   return key_len;
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1828
}
94ae0ede53a5 8155690: Update libPNG library to the latest up-to-date
azvegint
parents: 35296
diff changeset
  1829
#endif /* TEXT || pCAL || iCCP || sPLT */
29913
95258013e132 8069198: Upgrade image library
azvegint
parents: 25859
diff changeset
  1830
#endif /* READ || WRITE */