diff --git a/CREDITS b/CREDITS
index 4a53778..404cf38 100644
--- a/CREDITS
+++ b/CREDITS
@@ -1,7 +1,5 @@
-This file contains the names of some of the people who have contributed to
-Libav/FFmpeg. The names are sorted alphabetically by last name.  As this file is
-currently quite outdated and git serves as a much better tool for determining
-authorship, it remains here for historical reasons only.
+This file contains the name of the people who have contributed to
+FFmpeg. The names are sorted alphabetically by last name.
 
 Dénes Balatoni
 Michel Bardiaux
diff --git a/Changelog b/Changelog
index 7e9ce5d..ddedcc7 100644
--- a/Changelog
+++ b/Changelog
@@ -65,7 +65,6 @@
 - fix compilation with --enable-hardcoded-tables
 - mjpeg: Detect overreads in mjpeg_decode_scan() and error out.
 - aac: add headers needed for log2f()
-- Fix races in default av_log handler (possibly exploitable)
 - lavf: inspect more frames for fps when container time base is coarse
 - AMV: disable DR1 and don't override EMU_EDGE
   (addresses http://seclists.org/bugtraq/2011/Apr/257)
@@ -77,8 +76,15 @@
 - Backported the Android VisualOn AAC encoder wrapper from 0.7.2
 
 
+version 0.6.3:
+
+- AMV: Fix possibly exploitable crash.
+- Fix apparently exploitable race condition.
+  (addresses http://seclists.org/bugtraq/2011/Apr/257)
+
 version 0.6.2:
 
+- fix compilation with --enable-hardcoded-tables
 - Fix invalid reads in VC-1 decoding (related to CVE-2011-0723)
 - Do not attempt to decode APE file with no frames
   (adresses http://packetstorm.linuxsecurity.com/1103-exploits/vlc105-dos.txt)
diff --git a/Doxyfile b/Doxyfile
index 5e1a405..ee233b9 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -17,7 +17,7 @@
 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
 # by quotes) that should identify the project.
 
-PROJECT_NAME           = Libav
+PROJECT_NAME           = FFmpeg
 
 # The PROJECT_NUMBER tag can be used to enter a project or revision number.
 # This could be handy for archiving the generated documentation or
diff --git a/INSTALL b/INSTALL
index 2ed04ef..8cd22bd 100644
--- a/INSTALL
+++ b/INSTALL
@@ -2,10 +2,10 @@
 1) Type './configure' to create the configuration. A list of configure
 options is printed by running 'configure --help'.
 
-'configure' can be launched from a directory different from the Libav
+'configure' can be launched from a directory different from the FFmpeg
 sources to build the objects out of tree. To do this, use an absolute
-path when launching 'configure', e.g. '/libavdir/libav/configure'.
+path when launching 'configure', e.g. '/ffmpegdir/ffmpeg/configure'.
 
-2) Then type 'make' to build Libav. GNU Make 3.81 or later is required.
+2) Then type 'make' to build FFmpeg. GNU Make 3.81 or later is required.
 
 3) Type 'make install' to install all binaries and libraries you built.
diff --git a/LICENSE b/LICENSE
index c6bcbe8..668350b 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,17 +1,17 @@
-Libav:
+FFmpeg:
 -------
 
-Most files in Libav are under the GNU Lesser General Public License version 2.1
+Most files in FFmpeg are under the GNU Lesser General Public License version 2.1
 or later (LGPL v2.1+). Read the file COPYING.LGPLv2.1 for details. Some other
 files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to
-Libav.
+FFmpeg.
 
-Some optional parts of Libav are licensed under the GNU General Public License
+Some optional parts of FFmpeg are licensed under the GNU General Public License
 version 2 or later (GPL v2+). See the file COPYING.GPLv2 for details. None of
 these parts are used by default, you have to explicitly pass --enable-gpl to
-configure to activate them. In this case, Libav's license changes to GPL v2+.
+configure to activate them. In this case, FFmpeg's license changes to GPL v2+.
 
-Specifically, the GPL parts of Libav are
+Specifically, the GPL parts of FFmpeg are
 
 - libpostproc
 - optional MMX optimizations for YUV to RGB colorspace conversion in
@@ -37,14 +37,14 @@
 -------------------
 
 Some external libraries, e.g. libx264, are under GPL and can be used in
-conjunction with Libav. They require --enable-gpl to be passed to configure
+conjunction with FFmpeg. They require --enable-gpl to be passed to configure
 as well.
 
 The OpenCORE external libraries are under the Apache License 2.0. That license
 is incompatible with the LGPL v2.1 and the GPL v2, but not with version 3 of
-those licenses. So to combine the OpenCORE libraries with Libav, the license
+those licenses. So to combine the OpenCORE libraries with FFmpeg, the license
 version needs to be upgraded by passing --enable-version3 to configure.
 
-The nonfree external library libfaac can be hooked up in Libav. You need to
+The nonfree external library libfaac can be hooked up in FFmpeg. You need to
 pass --enable-nonfree to configure to enable it. Employ this option with care
-as Libav then becomes nonfree and unredistributable.
+as FFmpeg then becomes nonfree and unredistributable.
diff --git a/README b/README
index 6346cff..e907e90 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-Libav README
+FFmpeg README
 -------------
 
 1) Documentation
diff --git a/cmdutils.c b/cmdutils.c
index 23f0efe..2349b70 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -341,7 +341,7 @@
 
 void show_banner(void)
 {
-    fprintf(stderr, "%s version " FFMPEG_VERSION ", Copyright (c) %d-%d the Libav developers\n",
+    fprintf(stderr, "%s version " FFMPEG_VERSION ", Copyright (c) %d-%d the FFmpeg developers\n",
             program_name, program_birth_year, this_year);
     fprintf(stderr, "  built on %s %s with %s %s\n",
             __DATE__, __TIME__, CC_TYPE, CC_VERSION);
diff --git a/configure b/configure
index b3e2fe1..954398f 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# Libav configure script
+# FFmpeg configure script
 #
 # Copyright (c) 2000-2002 Fabrice Bellard
 # Copyright (c) 2005-2008 Diego Biurrun
@@ -44,9 +44,9 @@
     echo "No compatible shell script interpreter found."
     echo "This configure script requires a POSIX-compatible shell"
     echo "such as bash or ksh."
-    echo "THIS IS NOT A BUG IN LIBAV, DO NOT REPORT IT AS SUCH."
+    echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
     echo "Instead, install a working POSIX-compatible shell."
-    echo "Disabling this configure test will create a broken Libav."
+    echo "Disabling this configure test will create a broken FFmpeg."
     if test "$BASH_VERSION" = '2.04.0(1)-release'; then
         echo "This bash version ($BASH_VERSION) is broken on your platform."
         echo "Upgrade to a later version if available."
@@ -240,7 +240,7 @@
   --malloc-prefix=PFX      prefix malloc and related names with PFX
   --enable-sram            allow use of on-chip SRAM
 
-Developer options (useful when working on Libav itself):
+Developer options (useful when working on FFmpeg itself):
   --disable-debug          disable debugging symbols
   --enable-debug=LEVEL     set the debug level [$debuglevel]
   --enable-gprof           enable profiling with gprof [$gprof]
@@ -276,8 +276,8 @@
     cat <<EOF
 
 If you think configure made a mistake, make sure you are using the latest
-version from Git.  If the latest version fails, report the problem to the
-libav-user@libav.org mailing list or IRC #libav on irc.freenode.net.
+version from SVN.  If the latest version fails, report the problem to the
+ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
 EOF
     if disabled logging; then
         cat <<EOF
@@ -2170,7 +2170,7 @@
     openbsd)
         enable malloc_aligned
         # On OpenBSD 4.5. the compiler does not use PIC unless
-        # explicitly using -fPIC. Libav builds fine without PIC,
+        # explicitly using -fPIC. FFmpeg builds fine without PIC,
         # however the generated executable will not do anything
         # (simply quits with exit-code 1, no crash, no output).
         # Thus explicitly enable PIC here.
@@ -3169,12 +3169,12 @@
 EOF
 }
 
-pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION"
-pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
-pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
-pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
+pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
+pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
+pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
+pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
 enabled avfilter &&
-    pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
+    pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
 enabled postproc &&
-    pkgconfig_generate libpostproc "Libav post processing library" "$LIBPOSTPROC_VERSION"
-pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
+    pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
+pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
diff --git a/libavutil/log.c b/libavutil/log.c
index 9319dcd..b08072c 100644
--- a/libavutil/log.c
+++ b/libavutil/log.c
@@ -74,7 +74,7 @@
     vsnprintf(line + strlen(line), sizeof(line) - strlen(line), fmt, vl);
 
     print_prefix= line[strlen(line)-1] == '\n';
-    if(print_prefix && !strncmp(line, prev, sizeof line)){
+    if(print_prefix && !strcmp(line, prev)){
         count++;
         return;
     }
@@ -83,7 +83,7 @@
         count=0;
     }
     colored_fputs(color[av_clip(level>>3, 0, 6)], line);
-    strncpy(prev, line, sizeof line);
+    strcpy(prev, line);
 }
 
 static void (*av_log_callback)(void*, int, const char*, va_list) = av_log_default_callback;
