summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Beckett <dave@dajobe.org>2015-05-02 14:18:53 -0700
committerDave Beckett <dave@dajobe.org>2015-05-02 14:24:03 -0700
commit44b8d5f2cae6c4e0e4c5c5207dbbd0098ff3df10 (patch)
tree69e052900259e9f10fbc289f2b28b0b94b8c76c8
parentd7ffb40ae33172065dd70a84d2d4fe840a397ffa (diff)
downloadraptor-44b8d5f2cae6c4e0e4c5c5207dbbd0098ff3df10.tar.gz
Remove sprintf() and replace with snprintf() or hard-coded format
-rw-r--r--librdfa/rdfa.c14
-rw-r--r--librdfa/subject.c2
-rw-r--r--src/turtle_lexer.l34
3 files changed, 31 insertions, 19 deletions
diff --git a/librdfa/rdfa.c b/librdfa/rdfa.c
index 004a5fc9..de8efbe1 100644
--- a/librdfa/rdfa.c
+++ b/librdfa/rdfa.c
@@ -607,6 +607,7 @@ static void start_element(void *parser_context, const char* name,
char* attrns;
char* literal_text;
size_t value_length = 0;
+ size_t literal_text_length;
attr = attributes[ci];
attrns = (char*)attributes[ci + 1];
@@ -614,10 +615,11 @@ static void start_element(void *parser_context, const char* name,
/* append the attribute-value pair to the XML literal */
value = (char*)malloc(value_length + 1);
- literal_text = (char*)malloc(strlen(attr) + value_length + 5);
snprintf(value, value_length, "%s", attributes[ci + 3]);
- sprintf(literal_text, " %s=\"%s\"", attr, value);
+ literal_text_length = strlen(attr) + value_length + 4;
+ literal_text = (char*)malloc(literal_text_length + 1);
+ snprintf(literal_text, literal_text_length, " %s=\"%s\"", attr, value);
context->xml_literal = rdfa_n_append_string(
context->xml_literal, &context->xml_literal_size,
literal_text, strlen(literal_text));
@@ -1022,7 +1024,8 @@ static void end_element(void* parser_context, const char* name,
context_stack->items[context_stack->num_items - 1]->data;
/* append the text to the current context's XML literal */
- char* buffer = (char*)malloc(strlen(name) + 4);
+ size_t name_len = strlen(name) + 3;
+ char* buffer = (char*)malloc(name_len + 1);
#if defined(DEBUG) && DEBUG > 0
printf("DEBUG: </%s>\n", name);
@@ -1031,7 +1034,10 @@ static void end_element(void* parser_context, const char* name,
(print_mapping_value_fp)rdfa_print_triple_list);
#endif
- sprintf(buffer, "</%s>", name);
+ buffer[0] = '<';
+ memcpy(buffer + 1, name, name_len);
+ buffer[name_len + 1] = '>';
+ buffer[name_len + 2] = '\0';
if(context->xml_literal == NULL)
{
context->xml_literal =
diff --git a/librdfa/subject.c b/librdfa/subject.c
index c4d7811b..dec483ea 100644
--- a/librdfa/subject.c
+++ b/librdfa/subject.c
@@ -43,7 +43,7 @@ char* rdfa_create_bnode(rdfacontext* context)
char buffer[64];
/* print and increment the bnode count */
- sprintf(buffer, "_:bnode%i", (int)context->bnode_count++);
+ snprintf(buffer, 64, "_:bnode%i", (int)context->bnode_count++);
rval = rdfa_replace_string(rval, buffer);
return rval;
diff --git a/src/turtle_lexer.l b/src/turtle_lexer.l
index 146373c1..76f2c2f3 100644
--- a/src/turtle_lexer.l
+++ b/src/turtle_lexer.l
@@ -889,7 +889,8 @@ void turtle_lexer_free(void *ptr, yyscan_t yyscanner)
const char *
turtle_token_print(raptor_world* world, int token, YYSTYPE *lval)
{
- static char buffer[2048];
+ #define TTP_DEBUG_BUFFER_SIZE 2048
+ static char buffer[TTP_DEBUG_BUFFER_SIZE];
if(!token)
return "<<EOF>>";
@@ -923,43 +924,48 @@ turtle_token_print(raptor_world* world, int token, YYSTYPE *lval)
return "HAT";
case STRING_LITERAL:
- sprintf(buffer, "STRING_LITERAL(%s)", lval->string);
+ snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "STRING_LITERAL(%s)",
+ lval->string);
return buffer;
case URI_LITERAL:
- sprintf(buffer, "URI_LITERAL(%s)",
- (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : ""));
+ snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "URI_LITERAL(%s)",
+ (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : ""));
return buffer;
case BLANK_LITERAL:
- sprintf(buffer, "BLANK_LITERAL(%s)", lval->string);
+ snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "BLANK_LITERAL(%s)",
+ lval->string);
return buffer;
case QNAME_LITERAL:
- sprintf(buffer, "QNAME_LITERAL(%s)",
- (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : ""));
+ snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "QNAME_LITERAL(%s)",
+ (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : ""));
return buffer;
case INTEGER_LITERAL:
- sprintf(buffer, "INTEGER_LITERAL(%s)", lval->string);
+ snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "INTEGER_LITERAL(%s)",
+ lval->string);
return buffer;
case FLOATING_LITERAL:
- sprintf(buffer, "FLOATING_LITERAL(%s)", lval->string);
+ snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "FLOATING_LITERAL(%s)",
+ lval->string);
return buffer;
case IDENTIFIER:
- sprintf(buffer, "IDENTIFIER(%s)",
- (lval->string ? (char*)lval->string : ""));
+ snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "IDENTIFIER(%s)",
+ (lval->string ? (char*)lval->string : ""));
return buffer;
case LANGTAG:
- sprintf(buffer, "LANGTAG(%s)",
- (lval->string ? (char*)lval->string : ""));
+ snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "LANGTAG(%s)",
+ (lval->string ? (char*)lval->string : ""));
return buffer;
case DECIMAL_LITERAL:
- sprintf(buffer, "DECIMAL_LITERAL(%s)", lval->string);
+ snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "DECIMAL_LITERAL(%s)",
+ lval->string);
return buffer;
case ERROR_TOKEN: