From 144e6c46f2a74730b52f61e86b946a6b6e3d42cf Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Oct 19 2014 02:10:22 +0000 Subject: Update to 8.0.1 - Add patch to compile with -Werror=format-security --- diff --git a/ast-format.patch b/ast-format.patch new file mode 100644 index 0000000..b96572c --- /dev/null +++ b/ast-format.patch @@ -0,0 +1,803 @@ +diff -up ast-8.0.1/channel.c.format ast-8.0.1/channel.c +--- ast-8.0.1/channel.c.format 2014-10-17 02:04:56.000000000 -0600 ++++ ast-8.0.1/channel.c 2014-10-18 19:29:38.541112982 -0600 +@@ -4088,13 +4088,11 @@ static void WriteBegin( AstChannel *this + } + + /* Append the "Begin" keyword followed by the class name. */ +- line = astAppendString( line, &nc, "Begin " ); +- line = astAppendString( line, &nc, class ); ++ line = astAppendString( line, &nc, "Begin %s", class ); + + /* If required, also append the comment. */ + if ( astGetComment( this ) && *comment ) { +- line = astAppendString( line, &nc, " \t# " ); +- line = astAppendString( line, &nc, comment ); ++ line = astAppendString( line, &nc, " \t# %s", comment ); + } + + /* Write out the resulting line of text. */ +@@ -4227,8 +4225,7 @@ static void WriteDouble( AstChannel *thi + } + + /* Append the name string followed by " = ". */ +- line = astAppendString( line, &nc, name ); +- line = astAppendString( line, &nc, " = " ); ++ line = astAppendString( line, &nc, "%s = ", name ); + + /* Format the value as a string and append this. Make sure "-0" isn't + produced. Use a magic string to represent bad values. */ +@@ -4241,12 +4238,11 @@ static void WriteDouble( AstChannel *thi + } else { + strcpy( buff, BAD_STRING ); + } +- line = astAppendString( line, &nc, buff ); ++ line = astAppendString( line, &nc, "%s", buff ); + + /* If required, also append the comment. */ + if ( astGetComment( this ) && *comment ) { +- line = astAppendString( line, &nc, " \t# " ); +- line = astAppendString( line, &nc, comment ); ++ line = astAppendString( line, &nc, " \t# %s", comment ); + } + + /* Write out the resulting line of text. */ +@@ -4318,8 +4314,7 @@ static void WriteEnd( AstChannel *this, + } + + /* Append the "End" keyword followed by the class name. */ +- line = astAppendString( line, &nc, "End " ); +- line = astAppendString( line, &nc, class ); ++ line = astAppendString( line, &nc, "End %s", class ); + + /* Write out the resulting line of text. */ + OutputTextItem( this, line, status ); +@@ -4445,17 +4440,14 @@ static void WriteInt( AstChannel *this, + } + + /* Append the name string followed by " = ". */ +- line = astAppendString( line, &nc, name ); +- line = astAppendString( line, &nc, " = " ); ++ line = astAppendString( line, &nc, "%s = ", name ); + + /* Format the value as a decimal string and append this. */ +- (void) sprintf( buff, "%d", value ); +- line = astAppendString( line, &nc, buff ); ++ line = astAppendString( line, &nc, "%d", value ); + + /* If required, also append the comment. */ + if ( astGetComment( this ) && *comment ) { +- line = astAppendString( line, &nc, " \t# " ); +- line = astAppendString( line, &nc, comment ); ++ line = astAppendString( line, &nc, " \t# %s", comment ); + } + + /* Write out the resulting line of text. */ +@@ -4578,13 +4570,11 @@ static void WriteIsA( AstChannel *this, + } + + /* Append the "IsA" keyword followed by the class name. */ +- line = astAppendString( line, &nc, "IsA " ); +- line = astAppendString( line, &nc, class ); ++ line = astAppendString( line, &nc, "IsA %s", class ); + + /* If required, also append the comment. */ + if ( astGetComment( this ) && *comment ) { +- line = astAppendString( line, &nc, " \t# " ); +- line = astAppendString( line, &nc, comment ); ++ line = astAppendString( line, &nc, " \t# %s", comment ); + } + + /* Write out the resulting line of text. */ +@@ -4715,13 +4705,11 @@ static void WriteObject( AstChannel *thi + /* Append the name string followed by " =". The absence of a value on + the right hand side indicates an Object value, whose definition + follows. */ +- line = astAppendString( line, &nc, name ); +- line = astAppendString( line, &nc, " =" ); ++ line = astAppendString( line, &nc, "%s =", name ); + + /* If required, also append the comment. */ + if ( astGetComment( this ) && *comment ) { +- line = astAppendString( line, &nc, " \t# " ); +- line = astAppendString( line, &nc, comment ); ++ line = astAppendString( line, &nc, " \t# %s", comment ); + } + + /* Write out the resulting line of text. */ +@@ -4861,8 +4849,7 @@ static void WriteString( AstChannel *thi + /* Append the name string followed by " = " and an opening quote + character (the string will be quoted to protect leading and + trailing spaces). */ +- line = astAppendString( line, &nc, name ); +- line = astAppendString( line, &nc, " = \"" ); ++ line = astAppendString( line, &nc, "%s = \"", name ); + + /* We now append the value string, but must inspect each character so + that quotes (appearing inside quotes) can be doubled. Determine the +@@ -4897,8 +4884,7 @@ static void WriteString( AstChannel *thi + + /* If required, also append the comment. */ + if ( astGetComment( this ) && *comment ) { +- line = astAppendString( line, &nc, " \t# " ); +- line = astAppendString( line, &nc, comment ); ++ line = astAppendString( line, &nc, " \t# %s", comment ); + } + + /* Write out the resulting line of text. */ +diff -up ast-8.0.1/frame.c.format ast-8.0.1/frame.c +--- ast-8.0.1/frame.c.format 2014-10-17 02:04:56.000000000 -0600 ++++ ast-8.0.1/frame.c 2014-10-18 19:29:38.544113039 -0600 +@@ -9845,8 +9845,8 @@ L1: + numbering of the primary frame. */ + pfrm_setting = NULL; + nc = 0; +- pfrm_setting = astAppendString( pfrm_setting, &nc, pfrm_attrib ); +- pfrm_setting = astAppendString( pfrm_setting, &nc, setting + axis_value ); ++ pfrm_setting = astAppendString( pfrm_setting, &nc, "%s", pfrm_attrib ); ++ pfrm_setting = astAppendString( pfrm_setting, &nc, "%s", setting + axis_value ); + + /* Attempt to set the attribute within the primary Frame. */ + astSetAttrib( pfrm, pfrm_setting ); +diff -up ast-8.0.1/memory.c.format ast-8.0.1/memory.c +--- ast-8.0.1/memory.c.format 2014-10-17 02:04:56.000000000 -0600 ++++ ast-8.0.1/memory.c 2014-10-18 19:29:38.545113058 -0600 +@@ -2868,14 +2868,14 @@ static char *ChrMatcher( const char *tes + /* Concatenate the sub-strings to form the final string. */ + reslen = 0; + for( ipart = 0; ipart < npart - 1; ipart++ ) { +- result = astAppendString( result, &reslen, parts[ ipart ] ); ++ result = astAppendString( result, &reslen, "%s", parts[ ipart ] ); + if( ipart < nsub ) { +- result = astAppendString( result, &reslen, newsubs[ ipart ] ); ++ result = astAppendString( result, &reslen, "%s", newsubs[ ipart ] ); + } else { +- result = astAppendString( result, &reslen, matches[ ipart ] ); ++ result = astAppendString( result, &reslen, "%s", matches[ ipart ] ); + } + } +- result = astAppendString( result, &reslen, parts[ ipart ] ); ++ result = astAppendString( result, &reslen, "%s", parts[ ipart ] ); + + /* Free resources. */ + if( newsubs && newsubs != (char **) subs ) { +diff -up ast-8.0.1/object.c.format ast-8.0.1/object.c +--- ast-8.0.1/object.c.format 2014-10-17 02:04:56.000000000 -0600 ++++ ast-8.0.1/object.c 2014-10-18 19:29:38.547113096 -0600 +@@ -3057,13 +3057,9 @@ static void ToStringSink( const char *te + the length of the currently allocated memory. */ + data = astChannelData; + +-/* Append the supplied text to the end of the string, and update the +- string length. */ +- data->ptr = astAppendString( data->ptr, &(data->len), text ); +- +-/* Append a newline character to the end of the string, and update the +- string length. */ +- data->ptr = astAppendString( data->ptr, &(data->len), "\n" ); ++/* Append the supplied text to the end of the string plus newline character, ++ and update the string length. */ ++ data->ptr = astAppendString( data->ptr, &(data->len), "%s\n", text ); + } + + void astSet_( void *this_void, const char *settings, int *status, ... ) { +diff -up ast-8.0.1/region.c.format ast-8.0.1/region.c +--- ast-8.0.1/region.c.format 2014-10-17 02:04:56.000000000 -0600 ++++ ast-8.0.1/region.c 2014-10-18 19:36:52.433619743 -0600 +@@ -10154,7 +10154,6 @@ f The global status. + /* Local Variables: */ + AstPointSet *ps; /* PointSet holding mesh */ + char *buffer = NULL; /* Buffer for line output text */ +- char buf[ 40 ]; /* Buffer for floating poitn value */ + double **ptr; /* Pointers to the mesh data */ + int i; /* Axis index */ + int j; /* Position index */ +@@ -10196,13 +10195,12 @@ f The global status. + /* Otherwise, if required, append the formatted value to the end of the + buffer. */ + } else if( format ){ +- buffer = astAppendString( buffer, &nc, ++ buffer = astAppendString( buffer, &nc, "%s", + astFormat( this, i, ptr[ i ][ j ] ) ); + + /* Otherwise, append the floating point value to the end of the buffer. */ + } else { +- sprintf( buf, "%g", ptr[ i ][ j ] ); +- buffer = astAppendString( buffer, &nc, buf ); ++ buffer = astAppendString( buffer, &nc, "%g", ptr[ i ][ j ] ); + } + /* Add a separating tab to the end of the buffer. */ + buffer = astAppendString( buffer, &nc, "\t" ); +diff -up ast-8.0.1/stcschan.c.format ast-8.0.1/stcschan.c +--- ast-8.0.1/stcschan.c.format 2014-10-17 02:04:56.000000000 -0600 ++++ ast-8.0.1/stcschan.c 2014-10-18 19:45:42.432028995 -0600 +@@ -463,7 +463,7 @@ static char *AddItem( AstStcsChan *this, + result = astAppendString( result, nc, " " ); + *crem = linelen - 3; + } +- result = astAppendString( result, nc, prefix ); ++ result = astAppendString( result, nc, "%s", prefix ); + *crem -= len; + } + +@@ -494,7 +494,7 @@ static char *AddItem( AstStcsChan *this, + } + + /* Add the property value to the returned buffer. */ +- result = astAppendString( result, nc, word ); ++ result = astAppendString( result, nc, "%s", word ); + + /* Add a traling space to the returned buffer, if there is room. */ + if( !linelen || *crem > 0 ) { +@@ -785,12 +785,9 @@ static char *ContextFragment( WordContex + for( i = 0; i < NEWORD; i++ ) { + if( con->words[ j ] ) { + +-/* Append this word to the buffer, extending the buffer size as +- necessary. */ +- *buf = astAppendString( *buf, &nc, con->words[ j ] ); +- +-/* Append a trailingh space. */ +- *buf = astAppendString( *buf, &nc, " " ); ++/* Append this word plus trailing space to the buffer, extending the buffer ++ size as necessary. */ ++ *buf = astAppendString( *buf, &nc, "%s ", con->words[ j ] ); + } + + /* Increment the index of the next word to use in the cyclic list. Wrap +@@ -1444,8 +1441,7 @@ static int GetRegionProps( AstStcsChan * + if( centre[ i ] != AST__BAD ) { + GetFmt( "CENTRE", spprops, i, defdigs, fmt, status ); + (void) sprintf( buf, fmt, scale*centre[ i ] ); +- prop = astAppendString( prop, &nc, buf ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", buf ); + + } else { + ok = 0; +@@ -1493,8 +1489,7 @@ static int GetRegionProps( AstStcsChan * + } else { + GetFmt( "LOLIMIT", spprops, i, defdigs, fmt, status ); + (void) sprintf( buf, fmt, scale*lbnd[ i ] ); +- prop = astAppendString( prop, &nc, buf ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", buf ); + } + } + +@@ -1514,8 +1509,7 @@ static int GetRegionProps( AstStcsChan * + } else { + GetFmt( "HILIMIT", spprops, i, defdigs, fmt, status ); + (void) sprintf( buf, fmt, scale*ubnd[ i ] ); +- prop = astAppendString( prop, &nc, buf ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, " %s", buf ); + } + } + +@@ -1539,8 +1533,7 @@ static int GetRegionProps( AstStcsChan * + if( centre[ i ] != AST__BAD ) { + GetFmt( "CENTRE", spprops, i, defdigs, fmt, status ); + (void) sprintf( buf, fmt, scale*centre[ i ] ); +- prop = astAppendString( prop, &nc, buf ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", buf ); + + } else { + ok = 0; +@@ -1603,8 +1596,7 @@ static int GetRegionProps( AstStcsChan * + for( i = 0; i < nspace; i++ ) { + if( *p != AST__BAD ) { + (void) sprintf( buf, fmt, scale*(*p) ); +- prop = astAppendString( prop, &nc, buf ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", buf ); + p += np; + } else { + astAddWarning( this, 1, "The supplied Polygon contains " +@@ -1647,8 +1639,7 @@ static int GetRegionProps( AstStcsChan * + if( centre[ i ] != AST__BAD ) { + GetFmt( "POSITION", spprops, i, defdigs, fmt, status ); + (void) sprintf( buf, fmt, scale*centre[ i ] ); +- prop = astAppendString( prop, &nc, buf ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", buf ); + + } else { + astAddWarning( this, 1, "The supplied PointList contains " +@@ -3963,7 +3954,7 @@ static AstKeyMap *ReadProps( AstStcsChan + + /* Save the current word as the start of the START value. */ + nc = 0; +- prop = astAppendString( prop, &nc, word ); ++ prop = astAppendString( prop, &nc, "%s", word ); + + /* If the current word is "JD" or "MJD", the following word should be + numerical. */ +@@ -3979,8 +3970,7 @@ static AstKeyMap *ReadProps( AstStcsChan + + /* Append the second word to the first word. */ + } else { +- prop = astAppendString( prop, &nc, " " ); +- prop = astAppendString( prop, &nc, word ); ++ prop = astAppendString( prop, &nc, " %s", word ); + } + + /* Convert JD to MJD if required. */ +@@ -4019,7 +4009,7 @@ static AstKeyMap *ReadProps( AstStcsChan + + /* Save the current word as the start of the STOP value. */ + nc = 0; +- prop = astAppendString( prop, &nc, word ); ++ prop = astAppendString( prop, &nc, "%s", word ); + + /* If the current word is "JD" or "MJD", the following word should be + numerical. */ +@@ -4035,8 +4025,7 @@ static AstKeyMap *ReadProps( AstStcsChan + + /* Append the second word to the first word. */ + } else { +- prop = astAppendString( prop, &nc, " " ); +- prop = astAppendString( prop, &nc, word ); ++ prop = astAppendString( prop, &nc, " %s", word ); + } + + /* Convert JD to MJD if required. */ +@@ -4081,7 +4070,7 @@ static AstKeyMap *ReadProps( AstStcsChan + + /* Save the current word as the start of the TIME value. */ + nc = 0; +- prop = astAppendString( prop, &nc, word ); ++ prop = astAppendString( prop, &nc, "%s", word ); + + /* If the current word is "JD" or "MJD", the following word should be + numerical. */ +@@ -4097,8 +4086,7 @@ static AstKeyMap *ReadProps( AstStcsChan + + /* Append the second word to the first word. */ + } else { +- prop = astAppendString( prop, &nc, " " ); +- prop = astAppendString( prop, &nc, word ); ++ prop = astAppendString( prop, &nc, " %s", word ); + } + + /* Convert JD to MJD if required. */ +@@ -4276,8 +4264,7 @@ static AstKeyMap *ReadProps( AstStcsChan + "'%s' in an STC-S description: '%s'.", status, + word, ContextFragment( &con, &fbuf, status ) ); + } +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, &con, status ); + } + +@@ -4401,8 +4388,7 @@ static AstKeyMap *ReadProps( AstStcsChan + !strcmp( word, "keV" ) || + !strcmp( word, "MeV" ) ) ) { + +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + nunit++; + word = GetNextWord( this, &con, status ); + } +@@ -4453,8 +4439,7 @@ static AstKeyMap *ReadProps( AstStcsChan + while( value != AST__BAD ) { + if( nval < MAXVAL ) { + val[ nval++ ] = value; +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, &con, status ); + value = astChr2Double( word ); + } else { +@@ -4509,8 +4494,7 @@ static AstKeyMap *ReadProps( AstStcsChan + while( value != AST__BAD ) { + if( nval < MAXVAL ) { + val[ nval++ ] = value; +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, &con, status ); + value = astChr2Double( word ); + } else { +@@ -4565,8 +4549,7 @@ static AstKeyMap *ReadProps( AstStcsChan + while( value != AST__BAD ) { + if( nval < MAXVAL ) { + val[ nval++ ] = value; +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, &con, status ); + value = astChr2Double( word ); + } else { +@@ -4621,8 +4604,7 @@ static AstKeyMap *ReadProps( AstStcsChan + while( value != AST__BAD ) { + if( nval < MAXVAL ) { + val[ nval++ ] = value; +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, &con, status ); + value = astChr2Double( word ); + } else { +@@ -4804,8 +4786,7 @@ static const char *ReadSpaceArgs( AstStc + "'%s' in an STC-S description: '%s'.", status, word, + ContextFragment( con, &fbuf, status ) ); + } +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, con, status ); + } + +@@ -4824,8 +4805,7 @@ static const char *ReadSpaceArgs( AstStc + "'%s' in an STC-S description: '%s'.", status, word, + ContextFragment( con, &fbuf, status ) ); + } +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, con, status ); + } + +@@ -4856,8 +4836,7 @@ static const char *ReadSpaceArgs( AstStc + "'%s' in an STC-S description: '%s'.", status, word, + ContextFragment( con, &fbuf, status ) ); + } +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, con, status ); + } + +@@ -4897,8 +4876,7 @@ static const char *ReadSpaceArgs( AstStc + "'%s' in an STC-S description: '%s'.", status, word, + ContextFragment( con, &fbuf, status ) ); + } +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, con, status ); + } + +@@ -4964,8 +4942,7 @@ static const char *ReadSpaceArgs( AstStc + "'%s' in an STC-S description: '%s'.", status, + word, ContextFragment( con, &fbuf, status ) ); + } +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, con, status ); + } + +@@ -4984,8 +4961,7 @@ static const char *ReadSpaceArgs( AstStc + "'%s' in an STC-S description: '%s'.", status, + word, ContextFragment( con, &fbuf, status ) ); + } +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, con, status ); + } + +@@ -5015,8 +4991,7 @@ static const char *ReadSpaceArgs( AstStc + } else { + *p = val; + } +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, con, status ); + } + +@@ -5039,8 +5014,7 @@ static const char *ReadSpaceArgs( AstStc + } else { + *p = val; + } +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, con, status ); + val = astChr2Double( word ); + } +@@ -5081,8 +5055,7 @@ static const char *ReadSpaceArgs( AstStc + "'%s' in an STC-S description: '%s'.", status, + word, ContextFragment( con, &fbuf, status ) ); + } +- prop = astAppendString( prop, &nc, word ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", word ); + word = GetNextWord( this, con, status ); + } + +@@ -6897,8 +6870,7 @@ static int WriteRegion( AstStcsChan *thi + ok = 0; + break; + } +- prop = astAppendString( prop, &nc, unit ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", unit ); + } + + /* Remove the trailing space, and store the property value in the KeyMap. */ +@@ -7075,8 +7047,7 @@ static int WriteRegion( AstStcsChan *thi + + GetFmt( "ERROR", spprops, i, defdigs, fmt, status ); + (void) sprintf( buf, fmt, scale*error ); +- prop = astAppendString( prop, &nc, buf ); +- prop = astAppendString( prop, &nc, " " ); ++ prop = astAppendString( prop, &nc, "%s ", buf ); + + } else { + nc = 0; +diff -up ast-8.0.1/xml.c.format ast-8.0.1/xml.c +--- ast-8.0.1/xml.c.format 2014-10-17 02:04:56.000000000 -0600 ++++ ast-8.0.1/xml.c 2014-10-18 20:01:17.384922858 -0600 +@@ -750,7 +750,7 @@ static char *AppendLine( char *str1, int + for( j = 0; j < ind; j++ ) temp = AppendChar( temp, nc, ' ', status ); + + /* Append the supplied string. */ +- return astAppendString( temp, nc, str2 ); ++ return astAppendString( temp, nc, "%s", str2 ); + } + + void astXmlAddAttr_( AstXmlElement *this, const char *name, const char *value, +@@ -3119,8 +3119,7 @@ static void CheckPrefName( char *name, c + + /* Check the string before the colon is a valid name. */ + temp = NULL; +- temp = astAppendString( temp, &nc, noun ); +- temp = astAppendString( temp, &nc, " prefix" ); ++ temp = astAppendString( temp, &nc, "%s prefix", noun ); + CheckName( name, temp, method, 0, status ); + temp = astFree( temp ); + +@@ -3990,7 +3989,7 @@ static const char *Format( AstXmlObject + /* If this is an element... */ + if( this->type == AST__XMLELEM ) { + temp = FormatTag( this, 1, status ); +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + temp = astFree( (void *) temp ); + + elem = (AstXmlElement *) this; +@@ -4012,7 +4011,7 @@ static const char *Format( AstXmlObject + result = AppendLine( result, &nc, temp, + ( (ind > -1) ? ind + IND_INC : -1 ), status ); + } else { +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + } + temp = astFree( (void *) temp ); + } +@@ -4024,7 +4023,7 @@ static const char *Format( AstXmlObject + if( ind > -1 ) { + result = AppendLine( result, &nc, temp, ind, status ); + } else { +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + } + temp = astFree( (void *) temp ); + +@@ -4035,27 +4034,23 @@ static const char *Format( AstXmlObject + attrib = (AstXmlAttribute *) this; + + if( attrib->prefix ) { +- result = astAppendString( result, &nc, attrib->prefix ); +- result = astAppendString( result, &nc, ":" ); ++ result = astAppendString( result, &nc, "%s:", attrib->prefix ); + } + + temp = AddEscapes( attrib->value, status ); +- result = astAppendString( result, &nc, attrib->name ); +- result = astAppendString( result, &nc, "=\"" ); +- result = astAppendString( result, &nc, temp ); +- result = astAppendString( result, &nc, "\"" ); ++ result = astAppendString( result, &nc, "%s=\"%s\"", attrib->name, temp ); + temp = astFree( (void *) temp ); + + } else if( type == AST__XMLWHITE ){ + white = (AstXmlWhite *) this; + temp = AddEscapes( white->text, status ); +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + temp = astFree( (void *) temp ); + + } else if( type == AST__XMLBLACK ){ + black = (AstXmlBlack *) this; + temp = AddEscapes( black->text, status ); +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + temp = astFree( (void *) temp ); + + } else if( type == AST__XMLCDATA || +@@ -4065,20 +4060,16 @@ static const char *Format( AstXmlObject + type == AST__XMLDTD ){ + + temp = FormatTag( this, 1, status ); +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + temp = astFree( (void *) temp ); + + } else if( type == AST__XMLNAME ){ + ns = (AstXmlNamespace *) this; +- result = astAppendString( result, &nc, "xmlns:" ); +- result = astAppendString( result, &nc, ns->prefix ); +- result = astAppendString( result, &nc, "=\"" ); +- result = astAppendString( result, &nc, ns->uri ); +- result = astAppendString( result, &nc, "\"" ); ++ result = astAppendString( result, &nc, "xmlns:%s=\"%s\"", ns->prefix, ns->uri ); + + } else if( type == AST__XMLPRO ){ + pro = (AstXmlPrologue *) this; +- result = astAppendString( result, &nc, ++ result = astAppendString( result, &nc, "%s", + Format( (AstXmlObject *) pro->xmldecl, ind, status ) ); + + /* Append all the miscalleneous items before the DTD. */ +@@ -4088,7 +4079,7 @@ static const char *Format( AstXmlObject + if( ind > -1 ) { + result = AppendLine( result, &nc, temp, ind, status ); + } else { +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + } + temp = astFree( (void *) temp ); + } +@@ -4100,7 +4091,7 @@ static const char *Format( AstXmlObject + if( ind > -1 ) { + result = AppendLine( result, &nc, temp, ind, status ); + } else { +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + } + temp = astFree( (void *) temp ); + } +@@ -4112,7 +4103,7 @@ static const char *Format( AstXmlObject + if( ind > -1 ) { + result = AppendLine( result, &nc, temp, ind, status ); + } else { +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + } + temp = astFree( (void *) temp ); + } +@@ -4122,7 +4113,7 @@ static const char *Format( AstXmlObject + doc = (AstXmlDocument *) this; + + /* Format the prologue. */ +- result = astAppendString( result, &nc, ++ result = astAppendString( result, &nc, "%s", + Format( (AstXmlObject *) doc->prolog, ind, status ) ); + + /* Append the root element. */ +@@ -4131,7 +4122,7 @@ static const char *Format( AstXmlObject + if( ind > -1 ) { + result = AppendLine( result, &nc, temp, ind, status ); + } else { +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + } + temp = astFree( (void *) temp ); + } +@@ -4143,7 +4134,7 @@ static const char *Format( AstXmlObject + if( ind > -1 ) { + result = AppendLine( result, &nc, temp, ind, status ); + } else { +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + } + temp = astFree( (void *) temp ); + } +@@ -4233,22 +4224,19 @@ static char *FormatTag( AstXmlObject *th + if( opening ) { + result = astAppendString( result, &nc, "<" ); + if( elem->prefix ) { +- result = astAppendString( result, &nc, elem->prefix ); +- result = astAppendString( result, &nc, ":" ); ++ result = astAppendString( result, &nc, "%s:", elem->prefix ); + } +- result = astAppendString( result, &nc, elem->name ); ++ result = astAppendString( result, &nc, "%s", elem->name ); + + if( elem->defns ) { +- result = astAppendString( result, &nc, " xmlns=\"" ); +- result = astAppendString( result, &nc, elem->defns ); +- result = astAppendString( result, &nc, "\"" ); ++ result = astAppendString( result, &nc, " xmlns=\"%s\"", elem->defns ); + } + + for( i = 0; i < elem->nnspref; i++ ) { + temp = Format( (AstXmlObject *) elem->nsprefs[ i ], -1, status ); + if( temp ) { + result = AppendChar( result, &nc, ' ', status ); +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + temp = astFree( (void *) temp ); + } + } +@@ -4257,7 +4245,7 @@ static char *FormatTag( AstXmlObject *th + temp = Format( (AstXmlObject *) elem->attrs[ i ], -1, status ); + if( temp ){ + result = AppendChar( result, &nc, ' ', status ); +- result = astAppendString( result, &nc, temp ); ++ result = astAppendString( result, &nc, "%s", temp ); + temp = astFree( (void *) temp ); + } + } +@@ -4268,26 +4256,20 @@ static char *FormatTag( AstXmlObject *th + } else if( elem->nitem > 0 ) { + result = astAppendString( result, &nc, "prefix ) { +- result = astAppendString( result, &nc, elem->prefix ); +- result = astAppendString( result, &nc, ":" ); ++ result = astAppendString( result, &nc, "%s:", elem->prefix ); + } +- result = astAppendString( result, &nc, elem->name ); +- result = astAppendString( result, &nc, ">" ); ++ result = astAppendString( result, &nc, "%s>", elem->name ); + } + + } else if( type == AST__XMLDTD ){ + dtd = (AstXmlDTDec *) this; + if( opening && dtd->name && dtd->name[0] ) { +- result = astAppendString( result, &nc, "name ); ++ result = astAppendString( result, &nc, "name ); + if( dtd->external && dtd->external[ 0 ] ) { +- result = astAppendString( result, &nc, " " ); +- result = astAppendString( result, &nc, dtd->external ); ++ result = astAppendString( result, &nc, "%s ", dtd->external ); + } + if( dtd->internal && dtd->internal[ 0 ] ) { +- result = astAppendString( result, &nc, " [" ); +- result = astAppendString( result, &nc, dtd->internal ); +- result = astAppendString( result, &nc, "]" ); ++ result = astAppendString( result, &nc, " [%s]" , dtd->internal ); + } + result = astAppendString( result, &nc, ">" ); + } +@@ -4295,27 +4277,21 @@ static char *FormatTag( AstXmlObject *th + } else if( type == AST__XMLCDATA ){ + if( opening ) { + cdata = (AstXmlCDataSection *) this; +- result = astAppendString( result, &nc, "text ); +- result = astAppendString( result, &nc, "]]>" ); ++ result = astAppendString( result, &nc, "", cdata->text ); + } + + } else if( type == AST__XMLCOM ){ + if( opening ) { + com = (AstXmlComment *) this; +- result = astAppendString( result, &nc, "" ); ++ result = astAppendString( result, &nc, "", com->text ); + } + + } else if( type == AST__XMLPI ){ + pi = (AstXmlPI *) this; + if( opening ) { +- result = astAppendString( result, &nc, "target ); ++ result = astAppendString( result, &nc, "target ); + if( pi->text && pi->text[0] ) { +- result = astAppendString( result, &nc, " " ); +- result = astAppendString( result, &nc, pi->text ); ++ result = astAppendString( result, &nc, " %s", pi->text ); + } + result = astAppendString( result, &nc, "?>" ); + } +@@ -4325,8 +4301,7 @@ static char *FormatTag( AstXmlObject *th + if( opening && xmlpi->text && xmlpi->text[0] ) { + result = astAppendString( result, &nc, "text && xmlpi->text[0] ) { +- result = astAppendString( result, &nc, " " ); +- result = astAppendString( result, &nc, xmlpi->text ); ++ result = astAppendString( result, &nc, " %s", xmlpi->text ); + } + result = astAppendString( result, &nc, "?>" ); + } diff --git a/ast.spec b/ast.spec index 5911c06..b2ea924 100644 --- a/ast.spec +++ b/ast.spec @@ -14,6 +14,8 @@ Source0: http://www.starlink.ac.uk/download/ast/ast-%{version}.tar.gz Patch0: ast-libs.patch # Remove bundled cminpack and erfa Patch1: ast-bundled.patch +# Fix compile with -Werror=format-security +Patch2: ast-format.patch BuildRequires: gcc-gfortran BuildRequires: cminpack-devel @@ -72,12 +74,17 @@ C and Fortran programming documentation for %{name}. %setup -q %patch0 -p1 -b .libs %patch1 -p1 -b .bundled +%patch2 -p1 -b .format rm -r cminpack erfa erfa.h erfam.h -sed -i -e '/include.*erfa/d' -e '/include.*pal/d' pal.c +sed -i -e '/include.*erfa/d' pal.c sed -i -e 's,cminpack/,cminpack-1/,' polymap.c sed -i -e '1i#!/bin/bash' ast_link* # Fix FSF address sed -i -e 's/675 Mass Ave, Cambridge, MA 02139/51 Franklin Street, Fifth Floor, Boston, MA 02110-1301/' COPYING.LIB proj.* wcstrig.* +# Fix pal location +mv pal palold +mv palold/pal . +rmdir palold %build @@ -131,6 +138,7 @@ make check %changelog * Sat Oct 18 2014 Orion Poplawski 8.0.1-1 - Update to 8.0.1 +- Add patch to compile with -Werror=format-security * Fri Aug 15 2014 Fedora Release Engineering - 8.0.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild