Bug#496763: Inadequate declaration of C string functions
Package: g++-4.3
Version: 4.3.1-5
Severity: normal
Hi,
I recently run into a bug with the following code (simplified to the
essentials):
#include <cstring>
void foo(const char *path) {
char *filename = rindex(path, '/');
*filename = 0;
++filename;
}
This clearly violates the constness of path but g++ does not give any
warnings. The reason for this is the declaration in <string.h>:
char *index(const char *s, int c);
char *rindex(const char *s, int c);
In C there is no other way to declare them so they work for both char*
and const char* but in C++ there is. These (and probably others)
functions should be declared as
char *index(char *s, int c);
const char *index(const char *s, int c);
char *rindex(char *s, int c);
const char *rindex(const char *s, int c);
MfG
Goswin
-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (500, 'unstable'), (400, 'unstable-i386')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.25-kvm-nofb (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash
Versions of packages g++-4.3 depends on:
ii gcc-4.3 4.3.1-5 The GNU C compiler
ii gcc-4.3-base 4.3.1-5 The GNU Compiler Collection (base
ii libc6 2.7-12 GNU C Library: Shared libraries
ii libgmp3c2 2:4.2.2+dfsg-3 Multiprecision arithmetic library
ii libmpfr1ldbl 2.3.1.dfsg.1-2 multiple precision floating-point
ii libstdc++6-4.3-dev 4.3.1-5 The GNU Standard C++ Library v3 (d
g++-4.3 recommends no packages.
-- no debconf information
Reply to: